我在Oracle的数据库表中有一个列,其中包含前导和尾随空格的值。我希望将前导空格替换为'P',使用'T'替换空格,仅使用内联查询。
答案 0 :(得分:0)
如果您想用相同数量的P
/ T
替换每个领导/培训空间,那么您可以使用:
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
答案 1 :(得分:0)
由于您没有指定前导空格和尾随空格的数量是否都是常量长度,因此只有在以下情况下才能使用此类内容:
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;
注意,数字" 2"在查询中的所有 instr 函数中,将代表前导/尾随空格的常数,因此您应该根据需要进行更改。