数据库使用特殊字符
特殊字符’&’
在往数据插入一条数据时,一直提示要给pageCode变量赋值:
update p_page set url = '/web/ms/ecm/monstationer/showpage/showPage.do?action=init&pageCode=p003' where id = '100'
解决办法
原来系统把pageCode当成了一个变量了,解决办法有以下几种:
- 我们可以拆分原来的连接符,实现过程需要两次连接字符串,效率很差,实现如下:
update p_page set url = '/web/ms/ecm/monstationer/showpage/showPage.do?action=init'||'&'||'pageCode=p003' where id = '100'
- 用ASCII码替代&,实现过程要调用函数,比上一种方法效率稍好:
update p_page set url = '/web/ms/ecm/monstationer/showpage/showPage.do?action=init'||chr(38)||'pageCode=p003' where id = '100'
- 在要插入的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))