sql - 用逗号分隔值在列中搜索的 SQL 查询
问题描述
我有一个包含逗号分隔值的数据库列,我想通过传递逗号分隔值在该列中进行搜索,如果任何给定值匹配,它应该返回该记录。
例如:包含 的列a,b,c,d,e
,输入是d,c,h
那么它应该返回这条记录。
顺序在这里无关紧要,也不需要所有值都匹配,即使单个值匹配,也应该返回记录。
解决方案
正如 jarlh 已经说过的,您不应该将数据存储为逗号分隔的项目。我建议您阅读有关如何避免此类数据的数据库规范化的文章。
尽管如此,您可以执行以下操作来查询所需的记录:
SELECT 1 FROM dual
WHERE REGEXP_LIKE(','||'a,b,c,d,e'||',', ',('||REPLACE('d,c,h',',','|')||'),')
请注意,在使用此查询之前,您必须转义输入字符串中的保留字符...
推荐阅读
- neo4j - Neo4j 计数不可预测
- java - 在 Java 中使用多线程解析 XML
- c# - Razor 页面中的范围和变量类型(已更正)
- wordpress - wordpress 变量转换成简码
- laravel - 如何使用 Vue js 和 Laravel 加载基于 id 的数据?
- r - ifelse 可以有效地用于没有回报的输出吗?
- php - 尝试安装 xdebug php.ini 文件中没有 zend_extension
- expression - 声明是 SML 中的表达式吗?
- java - 如果用户输入某个关键字并显示它,我如何让editText获取stringarray的值?
- powerbi - Power pivot 中的 SUM 值相同