我有一个数据库列,其中包含逗号分隔的值,我想通过传递逗号分隔的值在该列中进行搜索,如果任何给定的值匹配,它应该返回该记录。
例如:该列包含a,b,c,d,e
,输入为d,c,h
,则它应返回此记录。
这里的顺序无关紧要,而且即使单个值匹配,也不必返回所有记录,也不必返回记录。
答案 0 :(得分:0)
正如jarlh所述,您不应将数据存储为逗号分隔的项目。建议您阅读有关如何避免此类数据的数据库规范化的文章。
您可以做以下类似的操作来查询所需的记录:
SELECT 1 FROM dual
WHERE REGEXP_LIKE(','||'a,b,c,d,e'||',', ',('||REPLACE('d,c,h',',','|')||'),')
请注意,在使用此查询之前,您必须对输入字符串中的保留字符进行转义...