点击此处浏览总目录

特殊字符转义

变量符"&"转义

  在DML中,若操作的字符中有特殊字符"&",则会被oracle视作是输入变量的标志,此时需要用转义字符来进行转义

  以下脚本在执行过程中,会导致数据缺失,目标表数据中只包含'辽宁','&大连'会被忽略

insert into tableA values ('辽宁&大连');

  &符号是Oracle里面用来识别自定义变量的设置

  方法1:在SQL*PLUS下执行以下命令将其关闭,然后再次执行导入脚本,问题搞定

Set define OFF;

  注意:如果是在TOAD中执行,建议在每一个要导入的脚本前执行以上命令,否则当导入第二个含有特殊字符的脚本的时候,又会出错
     如果是在SQL*PLUS中执行,则只需要设置一次define OFF,后面就可以连续导入了,直到重新设置define ON为止

 

  方法2:在SQL语句中将'&'替换成chr(38),因为chr(38)是"&"的ASCII码

select 'Tom' || chr(38) || 'Jerry' from dual;

 

  方法3:分拆原来的字符串

select 'Tom' || '&' || 'Jerry' from dual;

  总结:方法1最为简便,而且效率也最高
     方法2因为有一个调用函数的过程,所以性能稍差
     方法3需要两次连接字符串,效率最差

 

单引号"'"转义

  方法1:使用转义字符

Select 'test' || '''' from dual;  --''''中第一和第四个'的作用是包含字符串,第二个'是转义字符,第三个'是真正的内容

   方法2:使用另一方式的转义字符

Select 'test''' from dual;  --'''中第一和第二个'分别是转义字符和真正内容,第三个'跟最开始的'匹配

 

posted @ 2020-03-25 13:50  立业的博客  阅读(2138)  评论(0编辑  收藏  举报