SINGLE字符串命令可以只提取数字吗?

时间:2014-04-24 14:35:30

标签: sql string ms-access oracle11g

已编辑:

我有这样的字符串:C1,C4,C7-12,C15,C19DS23, 28, 35, 39。如果可能的话,我需要一个字符串命令来仅提取数字ASCII子集中的字符。所以:C1,C4,C7-12,C15,C19只会147121519放弃所有的字母字符,空格和标点符号。同样,DS23, 28, 35, 39将成为23283539

我的表:

 Part_Number  Ref_Location
 12345        C1, C4, C7-12, C15, C19
 AB354        DS1,5,19-37,46
 N-98DX       R1, R5-7, R75

我的SQL:

从表中选择Part_Number,SpecialStringFunction(Ref_Location,0123456789);

期望的结果

 12345        147121519
 AB354        15193746
 N-98DX       15775

我正在使用Microsoft Access 2010并连接到Oracle 11g

1 个答案:

答案 0 :(得分:0)

你可以尝试类似的东西来完成你的任务。

SELECT MAX (yy)
  FROM (    SELECT TO_NUMBER ( (REPLACE (SYS_CONNECT_BY_PATH (x, ','), ',', '')))
                      AS yy
              FROM (    SELECT REGEXP_SUBSTR ('C1,C4,C7-12,C15,C19',
                                              '[[:digit:]]',
                                              1,
                                              LEVEL)
                                  AS x, LEVEL AS y
                          FROM DUAL
                    CONNECT BY LEVEL < 10)
        CONNECT BY PRIOR y = y - 1)

如果您使用的是Oracle 11g,那么您可以很好地使用listagg函数而不是SYS_CONNECT_BY_PATH。