SELECT查詢(xún)的應(yīng)用(一)
2024-07-21 02:30:51
供稿:網(wǎng)友
比如我們要從很多文章的標(biāo)題中找到所有包含"MySQL"這個(gè)字眼的文章。這就應(yīng)該在 WHERE 子句中用到 "LIKE",就是模糊查詢(xún)。
首先交待一下SQL語(yǔ)言中的統(tǒng)配符,統(tǒng)配符就是用一個(gè)字符統(tǒng)一匹配任何字符,SQL中,一個(gè)字符"_"匹配單個(gè)的任何字符;一個(gè)字符"%"匹配任何零個(gè)到多個(gè)字符。舉例來(lái)說(shuō),"A_" 可以匹配諸如 "AA"、"AB"、"A2"、"A$"……等等;而 "A%" 可以匹配 "ABCD"、"A"、"AG$Bng0"、"An apple is just an apple."……等等。
怎么用呢?還是舉個(gè)實(shí)際的例子:工廠倉(cāng)庫(kù)里的東東,很多、很雜,要分成幾大類(lèi)來(lái)管理:比如A類(lèi)代表機(jī)配件,B類(lèi)代表工具,C類(lèi)代表包裝材料……等等,每一類(lèi)下面的東東再分別編號(hào),如"A0001"、"A1065"、"B1014"等。在管理這個(gè)數(shù)據(jù)庫(kù)的時(shí)候,編號(hào)作為一個(gè)字段,這個(gè)字段不僅作為該物品的代號(hào),同時(shí)也表明了它的類(lèi)別。當(dāng)你要查詢(xún)所有的工具時(shí),可以這樣:
SELECT * FROM goods WHERE code LIKE 'B%' ORDER BY code'
這樣就是查詢(xún)code這個(gè)字段(就是編號(hào))為字母B打頭的所有記錄。注意這里'B%'表示字母B是出現(xiàn)在字段的開(kāi)頭,與下一個(gè)例子不同:查找文章標(biāo)題中含有"MySQL"這個(gè)字眼的所有文章,因?yàn)橐檎业哪繕?biāo)"MySQL"不一定出現(xiàn)在文章標(biāo)題的什么位置上,所以應(yīng)該:
SELECT * FROM articles WHERE title LIKE '%MySQL%'
'%MySQL%'的意思是"MySQL"這個(gè)字眼出現(xiàn)在標(biāo)題中,它的前面可能有文字,后面也可能有文字。
既然查"MySQL"可以,查別的字眼未嘗不可以。可以讓瀏覽者自己輸入他要搜索的關(guān)鍵字,就是這樣:
<!--input.php:-->
<form method="get" action="search.php">
關(guān)鍵字:<input type="text" size=10 name="key"> <input type="submit" value="查詢(xún)">
</form>
<!--search.php:-->
<?
...
$query="select * from article where title like '%$key%'";
$result=$mysql_query($query,$db);
...
?>
注意在使用模糊查詢(xún)時(shí),有一種情況應(yīng)該小心,就是當(dāng)一個(gè)字段是類(lèi)似 '2,13,25,33' 這樣的值時(shí),若要查詢(xún)它其中是否包含'2'這一項(xiàng),就不能簡(jiǎn)單的用 '%2%' 來(lái)查詢(xún)。因?yàn)槿绻@樣,一個(gè)這樣的值也會(huì)被查詢(xún)到:'1,6,21,27'。這并不是我們所希望的。所以在處理這樣的問(wèn)題時(shí),應(yīng)該將該字段存為 '.2.13.25.33.' 的形式。這樣當(dāng)需要查詢(xún)包含'2'這一項(xiàng)的記錄,就可以放心的用 '%.2.%' 了。
時(shí)間倉(cāng)促,草草成稿;如有不確,務(wù)請(qǐng)指正。