OK、答えが簡単かもしれない質問がありますが、それを行う方法がわかりません:
質問:
IN を LIKE と一緒に使用するにはどうすればよいですか?
重複しない理由:
複数の文字列があるかどうかは、ORを使用して確認できます。しかし、これは私がやろうとしていることには当てはまりません。
質問の説明:
パラメータ @path を持つ SP があります。複数のパスを区切り文字で区切って送信したいと考えています (sp を複数回呼び出すのを避けるため)。分割された値を持つテーブルを返すカスタム関数を使用して文字列を分割します。
分割された値テーブルの値を LIKE 演算子で使用するにはどうすればよいでしょうか。
私がこれまでに行ったこと:
declare
@path varchar(max) = 'CompanyRules/Billing/IntegrationServices|CompanyRules/Reports/IntegrationServices',
@default_code varchar(max) = '1'
declare @tempTable TABLE(path varchar(max))
INSERT INTO @tempTable (path)
SELECT split from fn_splitby(@path, '|')
select prg.path, prg.default_code, prmd.optional_property_1, prmd.optional_property_2, prmd.optional_property_3, prmd.optional_property_4, prmd.optional_property_5, prmd.optional_property_6
from pdm_rule_group prg, pdi_rule_master prmd
where prg.path = prmd.path
AND prg.path in (select path from @tempTable)
AND prg.default_code != @default_code
これは結果をもたらしません。
考えられる解決策:
@tempTable をループしてから、LIKE で使用する別の文字列を作成する必要があります。これは確かに悪い解決策であり、他の解決策があるかもしれません。