首页 > 解决方案 > 用逗号分隔值在列中搜索的 SQL 查询

问题描述

我有一个包含逗号分隔值的数据库列,我想通过传递逗号分隔值在该列中进行搜索,如果任何给定值匹配,它应该返回该记录。

例如:包含 的列a,b,c,d,e,输入是d,c,h那么它应该返回这条记录。

顺序在这里无关紧要,也不需要所有值都匹配,即使单个值匹配,也应该返回记录。

标签: sqloraclecsv

解决方案


正如 jarlh 已经说过的,您不应该将数据存储为逗号分隔的项目。我建议您阅读有关如何避免此类数据的数据库规范化的文章。

尽管如此,您可以执行以下操作来查询所需的记录:

SELECT 1 FROM dual WHERE REGEXP_LIKE(','||'a,b,c,d,e'||',', ',('||REPLACE('d,c,h',',','|')||'),')

请注意,在使用此查询之前,您必须转义输入字符串中的保留字符...


推荐阅读