通配符
SQL中的通配符用來(lái)代替一個(gè)或者多個(gè)字符坏快。
SQL通配符與LIKE運(yùn)算符一起使用。
SQL Server中常用的通配符
%
匹配任意長(zhǎng)度的(長(zhǎng)度可以為0)字符
如’m%n’匹配字符m和n之間有任意個(gè)字符的字符串守呜,匹配的示例有man,min山憨,mon查乒,moon,...
_
匹配任意單個(gè)字符
如’m_n’匹配字符m和n之間含有任意一個(gè)字符的字符串郁竟,匹配的示例有man侣颂,min,mon枪孩,...
[字符集合]
匹配字符集合中的任何一個(gè)字符
如’[mz]’匹配字符m或者z憔晒,’[m-z]’匹配介于m與z之間的任意單個(gè)字符。
[^]
匹配不在括號(hào)中的任意單個(gè)字符
如’[^mz]’匹配任何不為m或者z的單個(gè)字符蔑舞。
轉(zhuǎn)義字符
使用轉(zhuǎn)義字符拒担,可以告訴DBMS,查詢中的通配符不再是通配符攻询,而是字符的實(shí)際值从撼。
如使用轉(zhuǎn)義字符對(duì)“%”進(jìn)行轉(zhuǎn)義后,“%”就表示百分號(hào)本身了钧栖。
使用ESCAPE 定義轉(zhuǎn)義字符
看下面的示例:
1
2
3
4
5
6
7
8CREATETABLEtb_TestTable(
idintNOTNULLIDENTITY,
nameNVARCHAR(64),
PRIMARYKEY(id));
INSERTINTOtb_TestTable(name)VALUES('tiana');
INSERTINTOtb_TestTable(name)VALUES('tiana5');
INSERTINTOtb_TestTable(name)VALUES('tiana5%');
SELECTnameFROMtb_TestTableWHEREnameLIKE'%/%'ESCAPE'/'
例子中先定義表tb_TestTable低零,再向其中插入3條數(shù)據(jù),最后對(duì)表進(jìn)行查詢操作拯杠。
查詢中的 LIKE '%/%' ESCAPE '/' 子句中掏婶,'/'被定義為轉(zhuǎn)義字符,這將告訴DBMS:字符串'%/%'中的第二個(gè)百分號(hào)為實(shí)際值潭陪,而不是通配符雄妥。當(dāng)然這里的第一個(gè)百分號(hào)仍然為通配符。所以依溯,這里查詢的結(jié)果應(yīng)該是:'tiana5%'老厌。
在SQL SERVER中,若不使用ESCAPE子句定義轉(zhuǎn)義字符的話黎炉,還可以使用’[%]’的形式告訴DNMS:這里的%不再是通配符而是百分號(hào)本身枝秤。
所以上面的查詢也可以寫成:
1
SELECTnameFROMtb_TestTableWHEREnameLIKE'%[%]'
上面的介紹同樣適用于其他通配符,對(duì)單引號(hào)慷嗜,雙引號(hào)同樣適用淀弹。
quote:如果在Android中需要匹配數(shù)據(jù)庫(kù)中的類似com.myapp.executor之類丹壕,如果使用ContentResolver的query,可以將字串中的'.'替換成下劃線垦页,將where子句定義為類似"title like com_myapp_executor"雀费,后面的參數(shù)置為null干奢。就可以定位指定的記錄了痊焊。試過(guò)單引號(hào)和反斜線似乎都不能夠定位。