鉴于以下示例语句,无论使用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);
问题是什么?
答案 0 :(得分:1)
您可以使用以下内容:
select regexp_replace(test_column, '^(\t|\s)*(.*)(\t|\s)*$', '\2')
from (
select ' ABCDEF Hijklmnopqr S32 ' test_column
from dual
);
这应该将你的字符串划分为3个部分(前导,有意义的文本,结尾)并仅返回第二个部分,从而切掉空格和制表符的尾部和结尾序列