SQL中'CharIndex'的替代方案

时间:2012-06-19 16:34:50

标签: sql

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

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

现在在查询中为了检查单个值(如果它存在于列'代码'中),如果我使用,则成功返回一行: -

charindex('0000000171', Codes) > 0

问题: - 如果我愿意,可以在SQL中使用正确的查询 如果在“代码”列中存在任何值,则搜索多个值。

对于前。如果需要在“代码”列中搜索三个值0000000171,0000000172,0000000173的存在,则后面的语法返回Nothing: -

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

请建议......

3 个答案:

答案 0 :(得分:1)

怎么样:

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

答案 1 :(得分:1)

您可以使用charindex三次

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

答案 2 :(得分:1)

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

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

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

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

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