我有一列,其值类似于'Blood work;MRI;ICC'
,它可以是一个字符串,某些单词之间用';'
分隔。
我想知道有一个like
子句,当您按'Blood work'
,'mri'
,'icc'
而不是{{ 1}}或'blood'
或'mr'
?
答案 0 :(得分:1)
要在CSV列表中搜索字段,一种方法是:
where ';' + mycol + ';' like '%;mri;%'
with
csv as (select 'Blood work;MRI;ICC' v),
match as (select 'mri' m union all select 'Blood work' union all select 'Blood')
select csv.v, match.m,
case when ';' + csv.v + ';' like '%;' + match.m + ';%'
then 'match'
else 'no match'
end matched
from csv
cross join match
v | m | matched :----------------- | :--------- | :------- Blood work;MRI;ICC | mri | match Blood work;MRI;ICC | Blood work | match Blood work;MRI;ICC | Blood | no match
答案 1 :(得分:1)
我个人会使用字符串分隔符:
SELECT {Columns}
FROM dbo.YourTable YT
CROSS APPLY STRING_SPLIT (YT.YourColumn,';') SS
WHERE SS.[Value] = 'mri';
如果您不使用SQL Sevrer 2016+,则可以使用自定义拆分器,例如DelimitedSplit8K_LEAD
。