鉴于此字符串:
名为.abc,0.123,.FGH,.QDG
如何最有效地使用PL / SQL输出:
abc,123,fgh和qdg
到目前为止,我已经获得了LOWER(REPLACE('.ABC,.123,.FGH,.QDG', '.', ' '))
,产生了
abc,123,fgh,qdg
如何在“fgh”之后但在“qdg”(“fgh,and qdg”)之前获得“和”?我必须使用INSTR()
和SUBSTR()
,还是有一个函数可以用“和”替换最后一个空格?
答案 0 :(得分:3)
以您已使用的内容为基础......将regexp_replace
与instr
with cte as(
select LOWER(REPLACE('.ABC,.123,.FGH,.QDG', '.', ' ')) as val from dual)
select regexp_replace(val,' ',' and ',instr(val ,' ',-1))
from cte;
或regexp_replace(val,', ',' and ',instr(val ,', ',-1))
如果您想要删除最后一个逗号。
答案 1 :(得分:1)
这样做:
select substr(text, 1, last_space_pos) || 'and' || substr(text, last_space_pos) new_text
from
(select text, instr(text, ' ', -1) last_space_pos
from
(select LOWER(REPLACE('.ABC,.123,.FGH,.QDG', '.', ' ')) text from dual)
);
函数调用instr(text, ' ', -1)
找到最后一个空格的位置,substr
调用在该点处断开字符串,以便我们可以插入'和'。使用嵌套的select
语句可以避免重复任何复杂的表达式。