SQL查询以逗号分隔值在列中搜索

时间:2019-05-07 08:42:48

标签: sql oracle csv

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

例如:该列包含a,b,c,d,e,输入为d,c,h,则它应返回此记录。

这里的顺序无关紧要,而且即使单个值匹配,也不必返回所有记录,也不必返回记录。

1 个答案:

答案 0 :(得分:0)

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

您可以做以下类似的操作来查询所需的记录:

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

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