从varchar2数据类型列中查找所有逗号分隔的值

时间:2015-10-28 06:36:50

标签: sql oracle oracle11g delimited-text

我不确定是否可以从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

2 个答案:

答案 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