[轉(zhuǎn)]SQL查詢中的特殊字符處理
我們都知道SQL查詢過程中,單引號(hào)“'”是特殊字符,所以在查詢的時(shí)候要轉(zhuǎn)換成雙單引號(hào)“''”。
但這只是特殊字符的一個(gè),在實(shí)際項(xiàng)目中,發(fā)現(xiàn)對于like操作還有以下特殊字符:下劃線“_”,百分號(hào)“%”,方括號(hào)“[]”以及尖號(hào)“^”。
其用途如下:
下劃線:用于代替一個(gè)任意字符(相當(dāng)于正則表達(dá)式中的 ? )
百分號(hào):用于代替任意數(shù)目的任意字符(相當(dāng)于正則表達(dá)式中的 * )
方括號(hào):用于轉(zhuǎn)義(事實(shí)上只有左方括號(hào)用于轉(zhuǎn)義,右方括號(hào)使用最近優(yōu)先原則匹配最近的左方括號(hào))
尖號(hào):用于排除一些字符進(jìn)行匹配(這個(gè)與正則表達(dá)式中的一樣)
以下是一些匹配的舉例,需要說明的是,只有l(wèi)ike操作才有這些特殊字符,=操作是沒有的。
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%
但這只是特殊字符的一個(gè),在實(shí)際項(xiàng)目中,發(fā)現(xiàn)對于like操作還有以下特殊字符:下劃線“_”,百分號(hào)“%”,方括號(hào)“[]”以及尖號(hào)“^”。
其用途如下:
下劃線:用于代替一個(gè)任意字符(相當(dāng)于正則表達(dá)式中的 ? )
百分號(hào):用于代替任意數(shù)目的任意字符(相當(dāng)于正則表達(dá)式中的 * )
方括號(hào):用于轉(zhuǎn)義(事實(shí)上只有左方括號(hào)用于轉(zhuǎn)義,右方括號(hào)使用最近優(yōu)先原則匹配最近的左方括號(hào))
尖號(hào):用于排除一些字符進(jìn)行匹配(這個(gè)與正則表達(dá)式中的一樣)
以下是一些匹配的舉例,需要說明的是,只有l(wèi)ike操作才有這些特殊字符,=操作是沒有的。
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%
?
在實(shí)際進(jìn)行處理的時(shí)候,對于=操作,我們一般只需要如此替換:' -> ''
對于like操作,需要進(jìn)行以下替換(注意順序也很重要)
[ -> [[]???? (這個(gè)必須是第一個(gè)替換的!!)
% -> [%]??? (這里%是指希望匹配的字符本身包括的%而不是專門用于匹配的通配符)
_ -> [_]
^ -> [^]