2011-01-21 6 views
9

テーブルフィールドの関数fn_SplitCommaSepがあり、テキストフィールドをカンマ区切りにしています( 'a、b、c'を3行:abc)SQLテーブルのフィールドの関数がテーブル入力のテーブルに結合する

テーブルの列を入力としてどのようにテーブルに結合できますか?この目的のため

は、テーブルMyTableとは2列、同上とTextWithCommasを持っていると言うと、そのテーブル値関数のfn_SplitCommaSepは

例えばTextWithoutComma

と呼ばれる一つの列を生成します。さておきDBにおけるこれら

select fs.TextWithoutComma 
    from fn_SplitCommaSep(select mt.TextWithCommas from MyTable) fs 

または

select fs.TextWithoutComma, mt.Id 
    from MyTable mt 
    inner join fn_SplitCommaSep(mt.TextWithCommas) fs on (something) 
+0

可能[テーブル値関数を使用したINNER JOIN]が重複しています(http://stackoverflow.com/questions/23402316/inner-join-with-テーブル値関数が機能しない) –

答えて

24

保存カンマ区切り値の1のようなものは、APPLY

を見てみましょうだから、のようなもの:

SELECT fs.TextWithoutComma, mt.Id 
FROM MyTable mt 
    CROSS APPLY fn_SplitCommaSep(mt.TextWithCommas) AS fs 
+0

パーフェクト、ありがとう!時間を割いていただきありがとうございます。ポイントはカンマ区切りで表示されます... Boyce-Coddは幸せではないでしょう。最も悪い解決策のケース:-) – mos

+0

私はその一日を探していましたが、それはとてもうまくいきます。ありがとうございました。 – MrHIDEn

+0

これは本当に有益ですありがとう –

関連する問題