sql特殊字符处理

SQL查询中的特殊字符处理 

我们都知道SQL查询过程中,单引号“'”是特殊字符,所以在查询的时候要转换成双单引号“''”。 

但这只是特殊字符的一个,在实际项目中,发现对于like操作还有以下特殊字符:下划线“_”,百分号“%”,方括号“[]”以及尖号“^”。 

其用途如下: 

下划线:用于代替一个任意字符(相当于正则表达式中的 ? ) 

百分号:用于代替任意数目的任意字符(相当于正则表达式中的 * ) 

方括号:用于转义(事实上只有左方括号用于转义,右方括号使用最近优先原则匹配最近的左方括号) 

尖号:用于排除一些字符进行匹配(这个与正则表达式中的一样) 

以下是一些匹配的举例,需要说明的是,只有like操作才有这些特殊字符,=操作是没有的。 

a_b...        a[_]b%



a%b...       a[%]b%



a[b...       a[[]b%



a]b...       a]b%



a[]b...      a[[]]b%



a[^]b...     a[[][^]]b%



a[^^]b...    a[[][^][^]]b% 



在实际进行处理的时候,对于=操作,我们一般只需要如此替换: 

' -> '' 

对于like操作,需要进行以下替换(注意顺序也很重要)



[ -> [[]     (这个必须是第一个替换的!!)



% -> [%]    (这里%是指希望匹配的字符本身包括的%而不是专门用于匹配的通配符)



_ -> [_]



^ -> [^]

注意:

在Oracle9i中,经过实际测试发现,需要处理的特殊字符有:

_(下划线)

%(百分号)

‘(单引号)

&(这个在Oracle中与后面的字符组成变量)

上面其他字符不需要处理。

对于前三种,需要使用ESCAPE进行转义,对于’&‘符号比较特殊,需要将’xxx&xxx'转化为'xxx&' || 'xxx'的形式,或者用chr(38)表示’&‘

转义符最好使用‘、‘(反斜线)。

使用’@‘,在全角字符过长时会发生错误,原因目前不明。

数据库sql的特殊字符:

1)单引号’:例如string a = “this is marry’s book.”;

             使用insert时就会出错。

             解决:a= a.Replace("'","''");

2)百分号% :例如string a = “50%”;

             使用like查询,查出带有50%的所有记录,则会被认为是通配符。

             解决:Select * FROM tbl where name LIKE '%/%%' ESCAPE '/'

即a=a.Replace("%","/%%")

或者[%]

3)下划线_ :例如 string a = “m_n”;

              使用like查询,select * from tbl where name like ‘%m_n%’,下划线被认为是通配符。

              解决:[_]

 

4)方括号[]:主要是左括号:[[]

5)尖括号^:[^]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>