oracle替换掉字段中存在的特殊符号以及空格
2017-09-07 22:57
253 查看
第一次写博客,内心还是很忐忑的,害怕自己懂的太少,考虑的不全面,误导看到博客的人,希望大家多多包涵,有错误、不对的地方以及考虑不全面的地方希望多多指导,虚心接受大家的建议,同时也是记录一下自己的成长历程!~好了,言归正传。
关于这个问题,查了很多,还没有找到确切的答案,很多都是用replac()函数,替换掉特殊符号以及空格以及特定的字符等,偶然间在一个帖子中看到一位大神用了translate()函数,真是学到了,所以在这里写下这篇博客。先对比一下两个函数(参考了很多前辈的博客):
replace语法:
REPLACE(char,search_string[, replacement_string])
解释一下:
在replace中,每个search_String 都会被replacement_string替换掉,而replacement_string可以为null或者空字符串,search_String会被移除,而如果search_String为空字符串时,会返回原来的字符串。
①当replacement_string=null或者replacement_string=‘’:
②当search_String=‘’:
③没有缺省值或空值情况:
translate语法:
TRANSLATE(char,from_string,to_string)
解释一下:返回出现在from_string中每个字符将会被to_string相对应的字符所替代,而且三个字符串都不可以为null或空字符串,当任意一个为空字符串时,返回为null。
①正常情况下:
②from_string字符数量大于to_string:多余部分会被删掉,
③from_string字符数量小于to_string:对应字符被替代,剩余部分不变
④from_string或者to_string为空字符串:
语法就介绍这么多了,接下来就是替换掉特殊字符,我的思路是这样的:用TRANSLATE()函数把能替换掉的特殊字符放在from_string中,而to_from中仅填一个空格字符,即
也就是把字符串char中第一个from_string中的符号用空格字符代替,剩下的所有特殊字符都会被删掉,剩下的问题就是解决一下空格的问题,空格我是用REPLACE()函数替换掉的,所以替换掉特殊符号以及空格整体如下:只要在from_string中添加想要去掉的特殊符号就可以!
这里需要强调两点:
①中英文符号一定要区分!区分!区分!重要的话说三遍,比如中文的双引号,单引号,都是不一样的。
②oracle中单引号的问题,需要用一个单引号转义,下一个单引号才能代表的是单引符号,用代码说明一下:
一共四个单引号,第一个跟第四个代表的是字符串的引号,第二个带引号视为转义下一个单引号,第三个单引号才是我们真正想要的输出的单引号。所以在替换掉单引号这个特殊符号,我们在from_string中一定要转义。
终于零零散散写完了第一篇属于自己的博客,感慨颇多,自己学习了解的过程中不会这么仔细的思考或是考虑这么多种情况,也不会静下心来思考问题,所以觉得写博客是提升自己的另一种途径,同时将琐碎的知识整理起来展现给大家也很开心,有错误和不完善的地方希望大家多多指正。
不完美,但正在努力!
关于这个问题,查了很多,还没有找到确切的答案,很多都是用replac()函数,替换掉特殊符号以及空格以及特定的字符等,偶然间在一个帖子中看到一位大神用了translate()函数,真是学到了,所以在这里写下这篇博客。先对比一下两个函数(参考了很多前辈的博客):
replace语法:
REPLACE(char,search_string[, replacement_string])
解释一下:
在replace中,每个search_String 都会被replacement_string替换掉,而replacement_string可以为null或者空字符串,search_String会被移除,而如果search_String为空字符串时,会返回原来的字符串。
①当replacement_string=null或者replacement_string=‘’:
select REPLACE('helloword','e') from dual; ---------- hlloword
②当search_String=‘’:
select REPLACE('helloword','','l') from dual; ---------- helloword
③没有缺省值或空值情况:
select REPLACE('helloword','e','l') from dual; ---------- hllloword
translate语法:
TRANSLATE(char,from_string,to_string)
解释一下:返回出现在from_string中每个字符将会被to_string相对应的字符所替代,而且三个字符串都不可以为null或空字符串,当任意一个为空字符串时,返回为null。
①正常情况下:
select TRANSLATE('asdfg','as','qw') from dual; ---------- qwdfg
②from_string字符数量大于to_string:多余部分会被删掉,
select TRANSLATE('asdfg','asf','qw') from dual; ---------- qwdg
③from_string字符数量小于to_string:对应字符被替代,剩余部分不变
select TRANSLATE('asdfg','a','qw') from dual; ---------- qsdfg
④from_string或者to_string为空字符串:
select TRANSLATE('asdfg','','qw') from dual; select TRANSLATE('asdfg','as','') from dual; ---------- (null)
语法就介绍这么多了,接下来就是替换掉特殊字符,我的思路是这样的:用TRANSLATE()函数把能替换掉的特殊字符放在from_string中,而to_from中仅填一个空格字符,即
translate(char,'$/\:*?"<>''|;[]{},.():;‘’“”【】《》,。()?、',' ');
也就是把字符串char中第一个from_string中的符号用空格字符代替,剩下的所有特殊字符都会被删掉,剩下的问题就是解决一下空格的问题,空格我是用REPLACE()函数替换掉的,所以替换掉特殊符号以及空格整体如下:只要在from_string中添加想要去掉的特殊符号就可以!
select REPLACE(translate('char','$/\:*?"<>''|;[]{},.():;‘’“”【】《》,。()?、',' '),' ','') from dual;
这里需要强调两点:
①中英文符号一定要区分!区分!区分!重要的话说三遍,比如中文的双引号,单引号,都是不一样的。
②oracle中单引号的问题,需要用一个单引号转义,下一个单引号才能代表的是单引符号,用代码说明一下:
select 'hello'' word' from dual; ---------- hello' word
一共四个单引号,第一个跟第四个代表的是字符串的引号,第二个带引号视为转义下一个单引号,第三个单引号才是我们真正想要的输出的单引号。所以在替换掉单引号这个特殊符号,我们在from_string中一定要转义。
终于零零散散写完了第一篇属于自己的博客,感慨颇多,自己学习了解的过程中不会这么仔细的思考或是考虑这么多种情况,也不会静下心来思考问题,所以觉得写博客是提升自己的另一种途径,同时将琐碎的知识整理起来展现给大家也很开心,有错误和不完善的地方希望大家多多指正。
不完美,但正在努力!
相关文章推荐
- 替换SQL字段中的换行符,回车符,空格等特殊符号
- Oracle 替换表中对应字段中的 空格 换行 回车符
- oracle字段中将空格替换
- oracle中用exp,imp命令导出dmp文件时候存在@特殊符号
- Oracle中lang raw字段的迁移以及ResultSet结果集中存在大数据块字段lang Raw的处理
- Word中常用特殊符号的替换表示方法以及相似符号的区别
- oracle 建表、最大ID、判断表是否已存在、字段的查询以及增删改、插入与修改语句
- 如何判断一个表以及一个表中的字段是否存在
- Oracle 特殊符号'&'的处理
- 关于oracle的where条件有特殊符号的处理
- iOS 金额字段加千位分隔符的方法以及银行卡卡号4位一空格的方法
- oracle中单字段存在1个或2个关联id时的查询sql
- 用JavaScript实现全局替换,解决$等特殊符号的难题[
- Oracle,mysql使用update替换指定字段里的字符
- oracle 数据库的建表以及字段的增删改查
- 小程序填坑之路(一):text空格符号以及省略号
- 关于get、post传递的参数存在特殊符号时产生错误的问题
- oracle的存储过程实现字段类型的替换
- Url参数中有+、空格、=、%、&、#等特殊符号的问题解决
- 解析XML时过滤空格等特殊符号防止出错的代码