替换字符串的最后一个字符 Oracle plsql
Replace last character of string Oracle plsql
如果最后一个字符是点,如何用空白替换字符串的最后一个字符。
示例:
Select replace('Luis Nazario Ronaldo Da Lima.',' ','.') as Name from dual
union all
Select replace('Ronaldo de Assis Moreira',' ','.') as Name from dual
名字需要去掉字符串末尾的点,名字可以。
我需要这个结果:
LuisNazarioRonaldoDaLima
RonaldodeAssisMoreira
您必须先放置要替换的字符。像这样:
Select replace('Luis Nazario Ronaldo Da Lima.','.') as Name from dual
union all
Select replace('Ronaldo de Assis Moreira','.') as Name from dual
但是如果你想删除所有行中带有列名变量的所有点,你应该这样做:
select decode(substr(your_colunm, 0, LENGTH(your_colunm) - 1),
'.',
substr(your_colunm, 0, LENGTH(your_colunm) - 1),
your_colunm) from your_table
您可以使用 REGEXP_REPLACE
:
SELECT REGEXP_REPLACE('Luis Nazario Ronaldo Da Lima.', ' |\.$', '') AS Name FROM dual
UNION ALL
SELECT REGEXP_REPLACE('Ronaldo de Assis Moreira', ' |\.$', '') FROM dual;
这输出:
LuisNazarioRonaldoDaLima
RonaldodeAssisMoreira
此处使用的正则表达式模式是 \.$
,如果最后一个字符是点,则将以空格或字符串的最后一个字符为目标。
为此您不需要正则表达式。正则表达式是一个大机器,导致执行缓慢(呃)。当您无法使用标准字符串函数解决问题时,它们非常有用,但这里不是这种情况。
要删除字符串末尾的一个、两个或更多尾随句点,只需使用 RTRIM(..., '.')
就像这样:
select original_name, rtrim(original_name, '.') as cleaned_up_name
from (
select 'Luis Nazario Da Lima.' as original_name from dual union all
select 'Ronaldo de Assis Moreira' from dual union all
select 'Pele...' from dual
)
;
ORIGINAL_NAME CLEANED_UP_NAME
--------------------------- -----------------------------
Luis Nazario Da Lima. Luis Nazario Da Lima
Ronaldo de Assis Moreira Ronaldo de Assis Moreira
Pele... Pele
如果最后一个字符是点,如何用空白替换字符串的最后一个字符。
示例:
Select replace('Luis Nazario Ronaldo Da Lima.',' ','.') as Name from dual
union all
Select replace('Ronaldo de Assis Moreira',' ','.') as Name from dual
名字需要去掉字符串末尾的点,名字可以。
我需要这个结果:
LuisNazarioRonaldoDaLima
RonaldodeAssisMoreira
您必须先放置要替换的字符。像这样:
Select replace('Luis Nazario Ronaldo Da Lima.','.') as Name from dual
union all
Select replace('Ronaldo de Assis Moreira','.') as Name from dual
但是如果你想删除所有行中带有列名变量的所有点,你应该这样做:
select decode(substr(your_colunm, 0, LENGTH(your_colunm) - 1),
'.',
substr(your_colunm, 0, LENGTH(your_colunm) - 1),
your_colunm) from your_table
您可以使用 REGEXP_REPLACE
:
SELECT REGEXP_REPLACE('Luis Nazario Ronaldo Da Lima.', ' |\.$', '') AS Name FROM dual
UNION ALL
SELECT REGEXP_REPLACE('Ronaldo de Assis Moreira', ' |\.$', '') FROM dual;
这输出:
LuisNazarioRonaldoDaLima
RonaldodeAssisMoreira
此处使用的正则表达式模式是 \.$
,如果最后一个字符是点,则将以空格或字符串的最后一个字符为目标。
为此您不需要正则表达式。正则表达式是一个大机器,导致执行缓慢(呃)。当您无法使用标准字符串函数解决问题时,它们非常有用,但这里不是这种情况。
要删除字符串末尾的一个、两个或更多尾随句点,只需使用 RTRIM(..., '.')
就像这样:
select original_name, rtrim(original_name, '.') as cleaned_up_name
from (
select 'Luis Nazario Da Lima.' as original_name from dual union all
select 'Ronaldo de Assis Moreira' from dual union all
select 'Pele...' from dual
)
;
ORIGINAL_NAME CLEANED_UP_NAME
--------------------------- -----------------------------
Luis Nazario Da Lima. Luis Nazario Da Lima
Ronaldo de Assis Moreira Ronaldo de Assis Moreira
Pele... Pele