實(shí)現關(guān)鍵字搜索功能
要把一個(gè)字符串與另一個(gè)字符串的一部分相匹配,你需要使用通配符。你使用通配符和關(guān)鍵字LIKE來(lái)實(shí)現模式匹配。下面的語(yǔ)句使用通配符和關(guān)鍵字LIKE重寫(xiě)了上面的查詢(xún),以返回所有正確站點(diǎn)的名字:
SELECT SITE_name FROM site_directory
WHERE site_desc LIKE ‘%trading cark%’
在這個(gè)例子中,所有其描述中包含表達式trading card的站點(diǎn)都被返回。描述為We have the greatest collection of trading cards in the world!的站點(diǎn)也被返回。當然,如果一個(gè)站點(diǎn)的描述中包含I am trading cardboard boxes online ,該站點(diǎn)的名字也被返回。
注意本例中百分號的使用。百分號是通配符的例子之一。它代表0個(gè)或多個(gè)字符。通過(guò)把trading card括在百分號中,所有其中嵌有字符串trading card的字符串都被匹配。
現在,假設你的站點(diǎn)目錄變得太大而不能在一頁(yè)中完全顯示。你決定把目錄分成兩部分。在第一頁(yè),你想顯示所有首字母在A(yíng)到M之間的站點(diǎn)。在第二頁(yè),你想顯示所有首字母在N到Z之間的站點(diǎn)。要得到第一頁(yè)的站點(diǎn)列表,你可以使用如下的SQL語(yǔ)句:
SELECT site_name FROM site_directory WHERE site_name LIKE ‘[A-M]%’
在這個(gè)例子中使用了表達式[A-M],只取出那些首字母在A(yíng)到M之間的站點(diǎn)。中括號([])用來(lái)匹配處在指定范圍內的單個(gè)字符。要得到第二頁(yè)中顯示的站點(diǎn),應使用這個(gè)語(yǔ)句:
SELECT site_name FROM site_directory
WHERE site_name LIKE ‘[N-Z]%’
在這個(gè)例子中,括號中的表達式代表任何處在N到Z之間的單個(gè)字符。
假設你的站點(diǎn)目錄變得更大了,你現在需要把目錄分成更多頁(yè)。如果你想顯示那些以A,B或C開(kāi)頭的站點(diǎn),你可以用下面的查詢(xún)來(lái)實(shí)現:
SELECT site_name FROM site_directory WHERE site_name LIKE ‘[ABC]%’
在這個(gè)例子中,括號中的表達式不再指定一個(gè)范圍,而是給出了一些字符。任何一個(gè)其名字以這些字符中的任一個(gè)開(kāi)頭的站點(diǎn)都將被返回。
通過(guò)在括號內的表達式中同時(shí)包含一個(gè)范圍和一些指定的字符,你可以把這兩種方法結合起來(lái)。例如,用下面的這個(gè)查詢(xún),你可以取出那些首字母在C到F之間,或者以字母Y開(kāi)頭的站點(diǎn):
SELECT site_name FROM site_directory WHERE site_name LIKE ‘[C-FY]%’
在這個(gè)例子中,名字為Collegescape和Yahoo的站點(diǎn)會(huì )被選取,而名字為Magicw3的站點(diǎn)則不會(huì )被選取。
你也可以使用脫字符(^)來(lái)排除特定的字符。例如,要得到那些名字不以Y開(kāi)頭的站點(diǎn),你可以使用如下的查詢(xún):
SELECT site_name FROM site_directory WHERE site_name LIKE ‘[^Y]%’
對給定的字符或字符范圍均可以使用脫字符。
最后,通過(guò)使用下劃線(xiàn)字符(_),你可以匹配任何單個(gè)字符。例如,下面這個(gè)查詢(xún)返回每一個(gè)其名字的第二個(gè)字符為任何字母的站點(diǎn):
SELECT site_name FROM site_directory WHERE site_name LIKE ‘M_crosoft’
這個(gè)例子既返回名為Microsoft的站點(diǎn),也返回名為Macrosoft的站點(diǎn)。但是,名字為Moocrosoft的站點(diǎn)則不被返回。與通配符’%’不同,下劃線(xiàn)只代表單個(gè)字符。
注意:
如果你想匹配百分號或下劃線(xiàn)字符本身,你需要把它們括在方括號中。如果你想匹配連字符(-),應把它指定為方括號中的第一個(gè)字符。如果你想匹配方括號,應把它們也括在方括號中。例如,下面的語(yǔ)句返回所有其描述中包含百分號的站點(diǎn):
SELECT site_name FROM site_directory WHERE site_desc LIKE ‘%[%]%’