修剪chr(49824)在oracle中的一个字段中间

问题描述 投票:0回答:3

无法修剪oracle'766195491 572'中字段中间的不可破坏空间

尝试以下方法,只有当侧面存在不易碎的空间时,它才有效。

select length(trim(replace('766195491                             572',chr(49824),''))) from dual;
oracle
3个回答
0
投票

只有当两侧存在不易碎的空间时,它才有效

这就是the trim() function应该做的事情:

TRIM使您可以从字符串中修剪前导或尾随字符(或两者)

“领先或尾随”的意思是“在两侧”。它不应该对源字符串中任何其他字符的外观有任何影响。

您需要使用replace()translate()函数;或者对于更复杂的场景,正则表达式函数。


0
投票

如果输入值位于名为input_str的列中,则:

translate(input_str, chr(49824), chr(32))

将使用常规(可破坏)空格替换输入字符串中的每个不可破坏空间。

如果您只是想删除所有不可破坏的空格而不想用任何东西替换它们,那么

replace(input_str, chr(49824))

(如果省略第三个参数,结果就是删除所有第二个参数)。

也许这个要求更复杂;查找所有出现的一个或多个连续的不间断空格,并用恰好一个标准空间替换每个这样的事件。使用正则表达式函数更容易实现:

regexp_replace(input_str, chr(49824) || '+', chr(32))

0
投票

试试CHR(32)而不是CHR(49824)

select length(replace('766195491                             572',chr(32),'')) from dual;

如果它不起作用,请使用类似的东西。

select length(regexp_replace('766195491                             572','[^-a-zA-Z0-9]','') ) from dual;

DEMO

© www.soinside.com 2019 - 2024. All rights reserved.