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

时间:2017-12-16 06:10:36

标签: oracle

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

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

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

  

仅当侧面存在不易碎的空间时才有效

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

  

TRIM使您可以从字符串

修剪前导或尾随字符(或两者)
“领先或尾随”的意思是“在两侧”。它不应该对源字符串中任何其他位置的字符外观产生任何影响。

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

答案 2 :(得分:0)

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

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

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

如果您只想删除所有不可破坏的空格并且不想用任何内容替换它们,那么

replace(input_str, chr(49824))

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

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

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