我在表格列中有一个字符串,如下所示
1. "C-DERD,C-FDER,E-FDFE,E-DFE,C-DFERE"
2. "E-FDFE,C-DFEC,E-DFDFE,E-DE"
如果我搜索像" DE"然后它将首先检查所有以' C开头的单个字符串 - '就像表中的约束一样。如果找到它,那么它将在单独的列中返回TRUE,在第二种情况下,它在“C”中找不到 - '然后,它将检查以' E开头的所有单个字符串 - '但它与搜索的字符串相同。仅使用CHARINDEX
功能。
答案 0 :(得分:2)
正如我在评论中提到的,您应该修复数据结构。但有时候,我们会遇到其他人非常糟糕的设计而无法修复它们。
一种方法是拆分字符串,虽然这有点痛苦。在你的情况下,你可以这样做:
select t.*,
(case when str like '%CE-DE%' then 1
when str like '%CE-[^,]DE%' then 1
when str like '%CE-[^,][^,]DE%' then 1
when str like '%CE-[^,][^,][^,]DE%' then 1
else 0
end) as flag
这会在-
和DE
之间查找最多三个插入字符,这对您的示例就足够了。