2016-11-15 1 views
1

まずクエリクエリ内の関数を使用して '文字列をテーブル分割'する方法はありますか?私の機能を持つ

select * 
from [dbo].fnSplitString('1|16|170','|') 

enter image description here

select m.CategoryTree as s 
from tblBuyOnlineMaster m 

enter image description here

を分割するデータと2番目のクエリ私からすべてのカテゴリを取得するためにこれら二つのクエリに参加したいです最初の結果と同様にテーブルの列のような2番目のクエリ

ヘルプは非常に便利です。

答えて

4

fnSplitStringは、テーブル値関数である、あなたは相関が「参加」を実行するcross apply演算子を使用することができますあなたの関数を仮定:

select * 
from tblBuyOnlineMaster m 
cross apply [dbo].fnSplitString(m.CategoryTree, '|') s 

cross applyオペレータがinner joinと合同であることに注意してください。 left joinセマンティクスが必要な場合は、代わりにouter apply演算子を使用してください。 https://technet.microsoft.com/en-us/library/ms175156%28v=sql.105%29.aspx?f=255&MSPPError=-2147217396も参照してください。

+1

「外部適用」は、与えられたシナリオに影響を与えることはありません。 –

+0

@Prdp 'fnSplitString'は黒いボックスであり、特殊な場合によって行が返されないことはありません。コメントを追加することで、この回答はすべての人に関連し、「次の論理的な質問」に答えます。 –

+0

@ic合意。しかし、私が感じることは、誰かを混乱させるかもしれないということです。ほとんど 'fnSplitString'は区切り文字に基づいて文字列を分割しますが、レコードをフィルタリングするロジックはないと思います。 –

関連する問題