Regex 替换前导空格和尾随空格
我在Oracle的数据库表中有一列,其值带有前导空格和尾随空格。我希望前导空格替换为'P',尾随空格替换为'T',仅使用内联查询Regex 替换前导空格和尾随空格,regex,oracle,Regex,Oracle,我在Oracle的数据库表中有一列,其值带有前导空格和尾随空格。我希望前导空格替换为'P',尾随空格替换为'T',仅使用内联查询如果要将每个前导/训练空格替换为相同数量的P/Ts,则可以使用: SELECT REPLACE( REGEXP_SUBSTR( your_column, '^ +' ), ' ', 'P' ) || TRIM( BOTH FROM your_column ) || REPLACE( REGEXP_SUBSTR( your_column, '
如果要将每个前导/训练空格替换为相同数量的
P
/T
s,则可以使用:
SELECT REPLACE( REGEXP_SUBSTR( your_column, '^ +' ), ' ', 'P' )
|| TRIM( BOTH FROM your_column )
|| REPLACE( REGEXP_SUBSTR( your_column, ' +$' ), ' ', 'T' )
FROM your_table
如果要将空格替换为单个p
/T
,则:
SELECT REGEXP_REPLACE(
REGEXP_REPLACE( your_column, '(.*?) +$', '\1T' ),
'^ +(.*)',
'P\1'
)
FROM your_table
由于您没有指定前导空格和尾随空格的长度是否都为常量,因此只有在以下情况下才能使用类似的内容:
select replace(substr(' hello world ',1, instr(' hello world ',' ',1,2) ),' ','P')||
trim(' hello world ')||
replace(substr(' hello world ', instr(' hello world ',' ',-1,2), length(' hello world ') ),' ','T')
from dual;
请注意,查询中所有instr函数中的数字“2”表示前导/尾随空格的常量,因此您应该根据需要对其进行更改。请发布一些示例数据和所需结果。还有,到目前为止你试过什么?