2013-10-25 17 views
5

次のことが可能かどうか疑問です。SQL関数の返すテーブルを持つ内部結合

私は、分割された値を持つテーブルを返す昏睡区切りの文字列を分割するSQL関数を持っています。

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

ITEM 
----- 
hello 
my name 
is 
John 

Aは、各行、ID及びコマ分離文字列を、テーブル記憶を有する:

こんにちは、私の名前は、テーブルジョン

戻ります

カーソルを使用しないと、結果のテーブルを取得できますか?

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とその行の行。

+2

MySQLまたはSQL Serverを使用していますか?両方でタグ付けを停止してください。彼らは*異なっている*。 –

+0

でも、可能であれば、文字列の処理をサポートしている言語を使って行われます。 – newtover

答えて

17

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

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

最初にカンマ区切りリストとして別々の値を格納しないことも検討してください。データベーステーブルは、JSONコンテナ、IMHOであってはいけません。

+0

これはまさに私が欲しいものです。ありがとう。データベースに昏睡区切りのリストを格納することについては全く同感ですが、以前の開発者から継承しています:) – nachovall

関連する問題