无法修剪oracle'766195491 572'中字段中间的不可破坏空间
尝试以下方法,只有当侧面存在不易碎的空间时,它才有效。
select length(trim(replace('766195491 572',chr(49824),''))) from dual;
只有当两侧存在不易碎的空间时,它才有效
这就是the trim()
function应该做的事情:
TRIM
使您可以从字符串中修剪前导或尾随字符(或两者)
“领先或尾随”的意思是“在两侧”。它不应该对源字符串中任何其他字符的外观有任何影响。
您需要使用replace()
或translate()
函数;或者对于更复杂的场景,正则表达式函数。
如果输入值位于名为input_str
的列中,则:
translate(input_str, chr(49824), chr(32))
将使用常规(可破坏)空格替换输入字符串中的每个不可破坏空间。
如果您只是想删除所有不可破坏的空格而不想用任何东西替换它们,那么
replace(input_str, chr(49824))
(如果省略第三个参数,结果就是删除所有第二个参数)。
也许这个要求更复杂;查找所有出现的一个或多个连续的不间断空格,并用恰好一个标准空间替换每个这样的事件。使用正则表达式函数更容易实现:
regexp_replace(input_str, chr(49824) || '+', chr(32))
试试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;