在Oracle中直到最后一个逗号(最多20个字符)的字符串值

时间:2018-08-27 12:25:39

标签: oracle plsql regexp-substr

我有如下要求在oracle中制作数据:

条件:-直到最后一个逗号的值(最多20个字符)。

Data                       | Length | Output
----------------------------------------------------
12,34,abc,D,eva,096,qwerty | 26     | 12,34,abc,D,eva,096
----------
12,34,abc,DEF,0014,nish    | 23     | 12,34,abc,DEF,0014
----------
12,34,abc,DEF,0014,gup,    | 23     | 12,34,abc,DEF,0014
----------
12,34,abc,D,eva            | 15     | 12,34,abc,D,eva
----------

我曾尝试在下面的查询中获取数据,最后以逗号给出结果,但我不知道如何在正则表达式中限制字符串限制。

从对偶中选择regexp_substr('12,34,abc,DEF,0014,nish','(。)+,');

2 个答案:

答案 0 :(得分:2)

以下内容将给出您似乎想要的结果,但是我不确定它是正确的,因为我怀疑分配的内容比上面提到的还要多:

SELECT LINE,
       LENGTH(LINE) AS ORIGINAL_LENGTH,
       CASE
         WHEN LENGTH(LINE) > 20 THEN
           SUBSTR(LINE, 1, INSTR(TRIM(',' FROM LINE), ',', -1)-1)
         ELSE LINE
       END AS RESULT
  FROM DATA

SQLFiddle here

好运。

答案 1 :(得分:0)

尝试regexp_replace(substr(your_string||',', 1, 21), ',[^,]*$')