1

我有一个 sql 表,其中“代码”列之一由“|”分隔的多个字符值组成。

(例如:|0000000171|0000001192|0000003498|0000003569|)。

现在在查询中检查单个值是否存在于列“代码”中,如果我使用,则成功返回一行:-

charindex('0000000171', Codes) > 0

问题:- 如果我想搜索多个值(如果它们中的任何一个存在于“代码”列中),那么 SQL 中的正确查询可能是什么。

例如。如果需要在“代码”列中搜索三个值 0000000171、0000000172、0000000173 的存在,则以下语法返回 Nothing:-

charindex('0000000171,0000000172,0000000173', Codes) > 0

请指教 ...

4

3 回答 3

2

如果您需要使用分隔列表,那么您的 charindex 应该在每个代码上包含分隔符,如下所示:

charindex('|'+'0000000171'+'|', Codes) > 0

或者

charindex('|0000000171|', Codes) > 0

设计“代码”字段的人似乎考虑到了这一点,因为它以分隔符开头和结尾。

但是,正确的解决方案是将代码存储在单独的表中。

于 2012-06-19T16:51:16.887 回答
1

关于什么:

(charindex('0000000171', Codes) > 0
or
charindex('0000000172', Codes) > 0
or
charindex('0000000173', Codes) > 0)
于 2012-06-19T16:38:42.343 回答
1

可以使用charindex三遍

charindex('0000000171', Codes) > 0 or
charindex('0000000172', Codes) > 0 or
charindex('0000000173', Codes) > 0
于 2012-06-19T16:39:22.987 回答