替换前导和尾随空间Oracle

时间:2017-05-25 09:10:03

标签: regex oracle

我在Oracle的数据库表中有一个列,其中包含前导和尾随空格的值。我希望将前导空格替换为'P',使用'T'替换空格,仅使用内联查询

2 个答案:

答案 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 函数中,将代表前导/尾随空格的常数,因此您应该根据需要进行更改。