问题描述
给定这个字符串:
.ABC,.123,.FGH,.QDG
如何最有效地使用 PL/SQL 进行输出(注意,和"):
How can I most-efficiently use PL/SQL to output (note the ", and"):
abc、123、fgh 和 qdg
到目前为止,我得到了 LOWER(REPLACE('.ABC,.123,.FGH,.QDG', '.', ' '))
,结果是
So far I've got LOWER(REPLACE('.ABC,.123,.FGH,.QDG', '.', ' '))
, which yields
abc, 123, fgh, qdg
如何在fgh,"之后但在qdg"(fgh, and qdg")之前得到and"?我必须使用 INSTR()
和 SUBSTR()
,还是有一个函数可以用和"替换最后一个空格?
How do I get that "and" after "fgh,", but before "qdg" ("fgh, and qdg")? Must I use INSTR()
and SUBSTR()
, or is there a function that can just replace the last space with " and "?
推荐答案
建立在你已经使用的基础上......使用 regexp_replace
和 instr
Building on what you used already... use regexp_replace
with 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))
如果你也想去掉最后一个逗号.
or regexp_replace(val,', ',' and ',instr(val ,', ',-1))
if you want to get rid of the last comma too.
这篇关于替换最后一次出现的子串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!