我有如下要求在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','(。)+,');
答案 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
好运。
答案 1 :(得分:0)
尝试regexp_replace(substr(your_string||',', 1, 21), ',[^,]*$')