Oracle - 无法删除/替换空格

时间:2016-04-12 08:56:40

标签: sql regex oracle

鉴于以下示例语句,无论使用RTRIM()LTRIM()还是REGEXP_REPLACE()的组合,我都无法摆脱前导和尾随空格:

select 
 test_column
,length(test_column) len
,regexp_replace(test_column, '(^[[:blank:]]+)|([[:blank:]]+$)','') rxp
,length(regexp_replace(test_column, '(^[[:blank:]]+)|([[:blank:]]+$)','')) len_rxp --22 characters expected, but is 26 
,rtrim(ltrim(test_column)) rltrim
,length(rtrim(ltrim(test_column))) len_rltrim --22 characters expected, but is 26 
from(
     select '   ABCDEF Hijklmnopqr S32              ' test_column --22 characters without and 29 including whitespaces
     from dual);

问题是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

select regexp_replace(test_column, '^(\t|\s)*(.*)(\t|\s)*$', '\2')
from (
      select '   ABCDEF Hijklmnopqr S32              ' test_column
      from dual
     );

这应该将你的字符串划分为3个部分(前导,有意义的文本,结尾)并仅返回第二个部分,从而切掉空格和制表符的尾部和结尾序列