我有一个sql表,其中一列“代码”由多个由“|”分配的字符值组成。
(例如:| 0000000171 | 0000001192 | 0000003498 | 0000003569 |)。
现在在查询中为了检查单个值(如果它存在于列'代码'中),如果我使用,则成功返回一行: -
charindex('0000000171', Codes) > 0
问题: - 如果我愿意,可以在SQL中使用正确的查询 如果在“代码”列中存在任何值,则搜索多个值。
对于前。如果需要在“代码”列中搜索三个值0000000171,0000000172,0000000173的存在,则后面的语法返回Nothing: -
charindex('0000000171,0000000172,0000000173', Codes) > 0
请建议......
答案 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
设计“代码”字段的人似乎都考虑到了这一点,因为它以分隔符开头和结尾。
但是,正确的解决方案是将代码存储在单独的表中。