失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > oracle中去掉回车 Tab 制表 空格等特殊符号

oracle中去掉回车 Tab 制表 空格等特殊符号

时间:2021-02-19 21:44:40

相关推荐

oracle中去掉回车 Tab 制表 空格等特殊符号

Oracle数据库中有各种数据类型,其中varchar2是存放字符串数据类型的,也是使用最多的类型,可以存储大部分的字段,包括常用的以及一些特殊的字符(如换行符、回车符、空格符等),但是这些特殊字符有时会对查询或输出造成影响,所以有时需要把这些特殊的字符去掉,如何有效去掉这些特殊的字符,下面一起看看。

首先,查看字符串中是否有这些特殊的字符,空格符还好点,可以看见明显的空格符号,如:abc edf,但是回车或换行就不明显了,这时就需要其他手段来查看了。

一、instr()函数

字符查找函数,此函数会返回待查字符在字符串中第一次出现的位置,如果不存在此字符,则返回'0'。

例如:

select instr('helloworld','l') from dual; --返回结果:3 默认第一次出现“l”的位置select instr('helloworld','b') from dual; --返回结果:0 字符串中没有“b”这个字符,返回'0'

二、chr()函数

将ASCII码转换为字符,有些字符无法直接查询,需要转换后再查,下面是常用的几个,详细的可查看:/commons?type=4

chr(9) --制表符chr(10) --换行符chr(13) --回车符chr(32) --空格符chr(34) --双引号“"”

例如:

select chr(34) FROM dual; --返回结果:"

三、开始查找字符

查出表中有特殊字符的数据,sql语句:

select column_name from table_name WHERE instr(column_name,chr(10))>0 ;

此语句会返回所查表中查询列中有换行符的数据,如果没有则返回空。

去掉特殊符号,使用replace()替换函数,将特殊字符替换成空,例如:

update table_name c set c.column_name = replace(c.column_name,chr(9),''); --去掉tab符号update table_name c set c.column_name = replace(c.column_name,chr(10),''); --去掉回车符号update table_name c set c.column_name = replace(c.column_name,chr(32),''); --去掉空格符号

以上语句会把对应的特殊符号去掉。

注:去掉空格符号还有一个函数,trim()函数,不过trim()只会去掉字符串首尾两端的空格,其他位置的不会发生变化,使用它是由限制的,可分情况使用。

sql语句:

SELECT REPLACE(REPLACE(REPLACE('a b c def',CHR(9),''),CHR(10),''),CHR(32),'') FROM dual;--返回:abcdef

这样写出来也可以查,可是不容易直观,这个sql我用的比较多,把它自定义了一个函数,看的很清楚,使用时直接调用即可

FUNCTION:CREATE OR REPLACE FUNCTION FUN_DEL_ENTER(DATA_NAME VARCHAR2)RETURN VARCHAR2 IS/*** 获取参数 **/V_RESULT VARCHAR2(4000);V_RESULT1 VARCHAR2(4000);V_RESULT2 VARCHAR2(4000);V_DATA_NAME VARCHAR2(4000);BEGINV_DATA_NAME := DATA_NAME;V_RESULT1 := replace(V_DATA_NAME, chr(32), ''); --去掉空格符号的V_RESULT2 := replace(V_RESULT1, chr(10), ''); --去掉回车符号的V_RESULT := replace(V_RESULT2, chr(9), ''); --去掉tab符号的RETURN(V_RESULT);END;SELECT FUN_DEL_ENTER('a b c def') FROM dual; --返回abcdef

有问题可以互相交流、改进,共同进步!

如果觉得《oracle中去掉回车 Tab 制表 空格等特殊符号》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。