我不确定是否可以从varchar2数据类型列中找到所有逗号分隔的值。
id test
----------------------
1 1
2 3,10,15,20
3 2
4 3,15
如果我的表格如上所示,那么我想只返回第2行和第4行,如下所示,即查询结果应如下所示:
rownum test
----------------------
1 3,10,15,20
2 3,15
答案 0 :(得分:2)
从数字数据类型列中查找所有逗号分隔的值。
无法在 NUMBER 数据类型列中存储逗号分隔的值。它必须是字符类型。
只需在过滤谓词中使用 INSTR :
SELECT ID, TEST FROM your_table WHERE instr(TEST, ',') > 0;
例如,
SQL> WITH DATA AS
2 ( SELECT 1 ID, '1' TEST FROM dual
3 UNION ALL
4 SELECT 2 , '3,10,15,20' FROM dual
5 UNION ALL
6 SELECT 3 , '2' FROM dual
7 UNION ALL
8 SELECT 4 , '3,15' FROM dual
9 )
10 SELECT ID, TEST FROM DATA WHERE instr(TEST, ',') > 0;
ID TEST
---------- ----------
2 3,10,15,20
4 3,15
INSTR(test, ',')
在分隔字符串中查找逗号 ,
的出现次数。 > 0
会过滤这些行。
注意: WITH子句仅用于构建示例数据。
答案 1 :(得分:0)
您可以使用REGEXP功能找到它。正则表达式是为复杂搜索指定模式的强大方法。 因此查询以获取特定结果为:
select id, test from Table_name where test REGEXP '[,]'
有关REGEX的更多详情:请转到dev.Mysql