急求用plsql 如何去掉字符串的前后全角和半角空格

比如'   1  234     ' 去空格后变为‘1  234’其中首尾的全半角空格穿插着出现

oracle中可以用regexp_replace
select regexp_replace(字段名,'正则表达式','替换目标') from 表
正则表达式:可以用正则语法来写,比如用\s ,这个匹配比较多,包括回车换行等。如果你字段中有其他特殊字符的话,就不能用这个了。也可以直接用 半角空格,全角空格代替,'[半角空格全角空格]'
替换目标:如果你想删除的话,就用‘’就行了。
当然上面的写法,只是select ,没有改变表中的实际数据,如果要改表,请用update追问

这样替换的话会把中间的全半角空格去掉,我中间的全半角空格想保留

追答

你可以用trim函数
select trim('半角空格' from trim('全角空格' from 字段)) from 表
不过,这有一个缺陷,如果字段前后,是纯粹的半角,或者全角,都没关系,
但是如果是半角全角乱七八糟的混合,就不行了。
具体你自己测试一下

追问

对啊,我现在就是乱七八糟混合,不知道怎么处理

追答

你可以试一试
select regexp_substr(字段名,'\w.*\w') from 表
这个是选取 以字符开始,以字符结束,中间所有的包含空格的字符串。首尾中间随意混杂空格,多次空格都可以。

温馨提示:答案为网友推荐,仅供参考
相似回答