特殊字符’&’

在往数据插入一条数据时,一直提示要给pageCode变量赋值:

update p_page set url = '/web/ms/ecm/monstationer/showpage/showPage.do?action=init&pageCode=p003' where id = '100'

解决办法

原来系统把pageCode当成了一个变量了,解决办法有以下几种:

  1. 我们可以拆分原来的连接符,实现过程需要两次连接字符串,效率很差,实现如下:

update p_page set url = '/web/ms/ecm/monstationer/showpage/showPage.do?action=init'||'&'||'pageCode=p003' where id = '100'

  1. 用ASCII码替代&,实现过程要调用函数,比上一种方法效率稍好:

update p_page set url = '/web/ms/ecm/monstationer/showpage/showPage.do?action=init'||chr(38)||'pageCode=p003' where id = '100'

  1. 在要插入的SQL语句前加上Set define off;与原SQL语句一起批量执行(执行效率最高)

oracle中有识别自定义变量的设置,define "&" (hex 26),我们可以在插入数据之前将其关闭,Set define OFF,插入完毕之后再打开

特殊字符单引号’

如何在字段中插入单引号呢?假设我们要插入下面一条记录:

select * from p_page where id = '123'

oracle中,单引号有两个作用,引用字符串;转义

那么方法一:’作为转义符,双竖线开始新一轮转义

insert into a values('a',' select * from p_page where id = '||''''||'123'||'''')

更简单的方法二:直接在字符串中使用转义符

insert into a values('a',' select * from p_page where id = '''123''')

方法三:用ASCII码代替

insert into a values('a',' select * from p_page where id = '||chr(39)||'123'||chr(39))