我可以用逗号分隔的字符串检查单个字符串,例如查找包含单个值的varchar数据字段,例如1 or 2 or 5
逗号分隔字符串中的'1,2,3,4,5'
,如下所述:https://stackoverflow.com/a/49202026/1830909,但是我想知道如何检查比较字符串是不是单个实心字符串,也是逗号分隔字符串。例如,数据字段是varchar和容器逗号分隔的字符串,如'1,3,4'
,我想检查一个项目,如1或3或4是否存在于' 1,2,3,4,5'
逗号分隔的字符串中,I希望成功澄清,任何帮助表示赞赏。
澄清: 虽然"在列中保留分隔的字符串很糟糕 想法"但是我认为当最大值只包含时,这并不重要 少于15项,在某些情况下我有太多的桌子,我不会 想增加。其他原因是喜欢使用json进行转移 data,将所有值解析为一个分隔的字符串并保存为一个 DB表的列,并将其作为字符串汇集到DB,并将其汇总到 不同的价值观。
答案 0 :(得分:2)
您需要一个字符串拆分器(AKA tokenizer)。在SQL 2016+中,您可以在2016年之前使用string_split我建议DelimitedSplit8K。此代码返回1是否有匹配值,否则为0。
DECLARE
@string1 varchar(100) = '1,32,2',
@string2 varchar(100) = '1,2,3,4,5';
SELECT matchingValue = ISNULL(MAX(1),0)
FROM string_split(@string1,',')
WHERE [value] IN (SELECT [value] FROM string_split(@string2,','));