区切り文字(スペース= '「)に基づいて、文字列を分割する表関数の使用があります。ですから、このクエリを使用することができ、テーブルBにテーブルAからコードを挿入する
CREATE FUNCTION dbo.Split (@sep char(1), @s varchar(512))
RETURNS table
AS
RETURN (
WITH Pieces(pn, start, stop) AS (
SELECT 1, 1, CHARINDEX(@sep, @s)
UNION ALL
SELECT pn + 1, stop + 1, CHARINDEX(@sep, @s, stop + 1)
FROM Pieces
WHERE stop > 0
)
SELECT
SUBSTRING(@s, start, CASE WHEN stop > 0 THEN stop-start ELSE 512 END) AS s
FROM Pieces
)
:
DECLARE @st1 as varchar(max),@st2 as varchar(max), @PractitionerId int
DECLARE MY_CURSOR CURSOR
LOCAL STATIC READ_ONLY FORWARD_ONLY
FOR
SELECT distinct ID
FROM [dbo].[TableA]
OPEN MY_CURSOR
FETCH NEXT FROM MY_CURSOR INTO @PractitionerId
WHILE @@FETCH_STATUS = 0
BEGIN
select @st1 = Cd_1, @st2 = Cd_2
from [dbo].[TableA]
WHERE ID = @PractitionerId
INSERT INTO tableB (ID, Cd) select @PractitionerIdas ID ,* from dbo.Split(' ', @st1)
INSERT INTO tableB (Id, Cd) select @PractitionerIdas ID,* from dbo.Split(' ', @st2)
FETCH NEXT FROM MY_CURSOR INTO @PractitionerId
END
CLOSE MY_CURSOR
DEALLOCATE MY_CURSOR
あなたは自分が物事のこれらの並べ替えを行うために必要見つけるたびちょうど一般的なコメント....(文字列分割すること)...それは一般的にあなたが設計されていないDBを持っていることを意味し、あなたが思いつく解決策はただのバンドです。 – objectNotFound
あなたの質問は実際にあなたがテーブルBのすべての値がテーブルAにあるかどうかチェックしたいのですか? – cybork