Oracle中直到最后一个逗号(最多20个字符)的字符串值
我需要在oracle中生成以下数据: 条件:-直到最后一个逗号的值(最多20个字符) 我在下面的查询中尝试过获取数据,它的最后一个结果是逗号,我不知道如何限制regexp中的字符串限制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
从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