Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle中直到最后一个逗号(最多20个字符)的字符串值_Oracle_Plsql_Regexp Substr - Fatal编程技术网

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

Oracle中直到最后一个逗号(最多20个字符)的字符串值,oracle,plsql,regexp-substr,Oracle,Plsql,Regexp Substr,我需要在oracle中生成以下数据: 条件:-直到最后一个逗号的值(最多20个字符) 我在下面的查询中尝试过获取数据,它的最后一个结果是逗号,我不知道如何限制regexp中的字符串限制 从dual中选择regexp_substr('12,34,abc,DEF,0014,nish','(.)+,') 以下内容将给出您似乎在寻找的结果,但我不确定它是否正确,因为我怀疑作业中有比前面提到的更多的内容: SELECT LINE, LENGTH(LINE) AS ORIGINAL_LENGT

我需要在oracle中生成以下数据:

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

我在下面的查询中尝试过获取数据,它的最后一个结果是逗号,我不知道如何限制regexp中的字符串限制


从dual中选择regexp_substr('12,34,abc,DEF,0014,nish','(.)+,')

以下内容将给出您似乎在寻找的结果,但我不确定它是否正确,因为我怀疑作业中有比前面提到的更多的内容:

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


祝你好运。

试试
regexp\u replace(substr(你的字符串| |',',1,21),,[^,]*$)
你尝试了什么查询?请使用标签下方的
编辑
按钮编辑你的问题,并包括你尝试过的查询。还有-why是
,eva
未从最后一行删除?@BobJarvis字符串未>20chars@Gary_W-谢谢,修正了。谢谢你的回复。不适用于12,34,abc,DEF,0014,gup,我在测试数据中遗漏了该行后面的逗号。现已修复,SQLFiddle已更新。
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