質問

私は、次のSQLスクリプトを持っています:

DECLARE @temp table (
    ID int IDENTITY(1, 1),
    data nvarchar(100)
)

INSERT INTO @temp (data) VALUES ('a,b,c')
INSERT INTO @temp (data) VALUES ('d,e,f')

SELECT *
FROM @temp AS T
    INNER JOIN
        (SELECT *
        FROM dbo.__StringSplit(T.data, ',', T.ID)) AS S
    ON T.ID = S.RefID

そして、上のクリックした後に実行し、私はこれらを得ます:

Line 17 The multi-part identifier "T.data" could not be bound.

私はまた、非加入バージョンを試してみましたが、同じエラーを持っています

SELECT T.ID, S.Item AS dataItem
FROM @temp AS T, dbo.__StringSplit(T.data, ',', T.ID) AS S
WHERE T.ID = S.RefID

...

私は何を期待することは、私がtest.ID @から来るのIDを持つテーブルを取得しなければならないとする@ test.data内の各カンマ区切り値は、自身のレコードに分割し、その値がデータ項目欄に入れますということでした。

どのように私はそれを達成することができますか?
私は、カーソルを使用するために必要なのですか?

私は http://pastebin.com/f7dd6350f <でDBO .__ StringSplitテーブル値関数の実装を貼り付けました/>

ありがとうございます。

他のヒント

あなたの分割文字列関数が本当に遅いです、ここでは1はるかに高速にするリンクがあります:

http://www.sommarskog.se/arrays-in-sql.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top