5

以下が可能かどうか疑問です。

コンマ区切りの文字列を分割して、分割された値を含むテーブルを返す SQL 関数があります。

こんにちは、私の名前はジョンです

テーブルを返します:

ITEM
-----
hello
my name
is
John

行ごとに、ID とカンマ区切りの文字列を格納するテーブルがあります。

VALUE_TO_SPLIT
--------------
1 | a,b,c
1 | d,e,f,g
2 | a,b
3 | a
3 | b,c,f

カーソルを使用せずに、結果のテーブルを取得することは可能ですか?

RESULTING_TABLE
1 | a
1 | b
1 | c
1 | d
1 | e
1 | f
1 | g
2 | a 
2 | b
3 | a  
3 | b  
3 | c  
3 | f  

つまり、分割された各値とその ID の行です。

4

1 に答える 1

18

関数は、インライン テーブル値関数のように見えます。関数を含めることができれば、それが効率的な実装であるかどうかを提案することもできます (すべてがそうであるとは限りません)。

SELECT t.col, s.Item
FROM dbo.tablename AS t
CROSS APPLY dbo.function_name(t.value) AS s;

また、最初から個別の値をコンマ区切りのリストとして保存しないことも検討する必要があります。データベース テーブルは、JSON コンテナーであってはなりません。

于 2013-10-25T18:09:05.257 に答える