无法修剪oracle中字段中间的不可破坏空间 '766195491 572'
尝试以下方法,只有当两侧存在不易碎的空间时,它才有效。
select length(trim(replace('766195491 572',chr(49824),''))) from dual;
答案 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;
答案 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))