我正在尝试将object_type,ABC,00,DEF,XY
字符串转换为ABC-00-DEF-XY-
这就是我所拥有的,我想知道是否有更有效的方式?
CONCAT(
REPLACE(
SUBSTR(a.object_name,
INSTR(a.object_name, ',',1,1)+1,
INSTR(a.object_name, ',',1,2)+1
),',','-'
),'-'
)
澄清:我需要删除所有内容,包括第一个逗号,用破折号替换所有剩余的逗号,然后在末尾添加一个破折号。
答案 0 :(得分:1)
试试这个
replace(substr(a.object_name,instr(a.object_name,',',1,1) + 1),',','-') ||'-'
答案 1 :(得分:1)
Rexexp_replace()正则表达式函数也可以派上用场:
select ltrim(
regexp_replace( col
, '([^,]+)|,([^,]+)', '\2-'
)
, '-'
) as res
from t1
结果:
RES
--------------
ABC-00-DEF-XY-
答案 2 :(得分:0)
我建议使用以下代码:
REPLACE(SUBSTRING(a.object_name,13,LEN(@object_name)-11),',','-') + '-'