隐藏

sqlinsert语句特殊字符处理转载:如何向数据库中插入特殊符号

发布:2014/12/2 11:25:29作者:管理员 来源:本站 浏览次数:1493

sql insert语句特殊字符处理

转载:

如何向数据库中插入特殊符号。
sql="insert into webPageInfo (webAddrees,content) values('"+thisURL+"','"+Webtext+"')";

Webtext是网页的全文,通过读URL文件得到字符串,它必然包含( '   "   )等特殊符号。这样的话,在书写SQL语句应该如何写,如果像上面书写,就会出现错误。


在 SQL中,表示字符串得引号强烈建议使用单引号(')。虽然MySQL也可以使用双引号("),但是为了和SQL Server和Oracle统一,建议都使用单引号。如果在字符串中也有单引号出现的话,在SQL中需要将其替换为两个单引号(''),DBMS会将其解 释为一个单引号的。

参考自:
关于SQL的换行符和字符串连接符,在MySQL、SQL Server和Oracle中均有不同,下面以列表显示。   MySQL SQL Server Oracle
换行符 \n或\r\n或CHAR(10) CHAR(13) CHR(10)
字符串连接符 CONCAT() + ||或CONCAT()


另 外,符号(&) 在Oracle里有特殊含义,是一个宏变量标识符,在SQLPLUS里执行SELECT 'AAA&BBB' AS STR FROM DUAL,它会提示你输入宏变量值,所有如果SQL里有(&),建议用单引号括起来,如SELECT 'AAA'||'&'||'nbsp;BBB' AS STR FROM DUAL它就不会提示了。
    个人的一点总结,以记之。


单引号' 可以用chr(39)表示,& 可以用chr(38)表示。

例子:

select 'test:' || chr(38) || chr(39) from dual;
结果是:test:&'

我找了一份ascii对应表(数码相机拍摄,所以,有点变形,呵呵)
 
注:chr()的反函数是ascii(), 比如:
select ascii('a') from dual;
结果是:97

另外,单引号也可以这样处理:

select 'I''m chinese' from dual
结果是:I'm chinese.