Hmx*_*hal 0 sql sql-server sql-server-2008
好的我有一个问题,答案可能很简单,但我不知道该怎么做:
问题:
我如何使用IN与LIKE?
为什么不重复:
我知道如果我有多个字符串,我可以使用或检查.但事实并非如此.
问题解释:
我有一个带参数@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
Run Code Online (Sandbox Code Playgroud)
这不会产生任何结果.
可能的解决方案:
我要做的是,我必须循环遍历@tempTable,然后创建单独的字符串以与LIKE一起使用.这肯定是一个糟糕的解决方案,并可能有一些其他的解决方案.
替换此声明
AND prg.path in (select path from @tempTable)
Run Code Online (Sandbox Code Playgroud)
同
AND EXISTS (select 1 from @tempTable where prg.path like "%"+path+"%" )
Run Code Online (Sandbox Code Playgroud)