如何使用CHARINDEX函数从SQL Server中的表列搜索字符串

时间:2017-09-19 18:02:44

标签: sql sql-server-2008

我在表格列中有一个字符串,如下所示

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功能。

1 个答案:

答案 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之间查找最多三个插入字符,这对您的示例就足够了。