在ADO使用SELECT語法二
作者:Eve Cole
更新時間:2009-05-30 19:54:35
接上一篇文章:
WHERE可以使用下面的BETWEEN、LIKE、IN運算子。
Between...And
Between...And判斷表達式的值是否落在指定的範圍。語法為:
expr Between value1 And value2
表示如果expr的值介於value1和value2之間,則Between...And運算子會回傳True;否則它會回傳False。
您也可以加上邏輯運算Not expr Between value1 And value2,來判斷相反的條件,即expr落在value1和value 2的範圍之外。
如果expr、value1、或value2為Null時,則Between...And會傳回Null值。
您不能在Between...And 運算子中使用通配符*,例如,您不能使用100* 和500* 來尋找介於1000至5000中的產品代號。
Like
Like尋找相符的關鍵字。
Like跟隨一個運算式,列出所要比較的字串或字串文字。
在一運算式中,您可以使用Like 運算子將一字段資料和一字符串運算式做一比較。您可以使用萬用字元*找出類似的資料,譬如Like "王*",查詢會傳回所有欄位中以[王] 做為開頭的資料。
Like後運算式可以使用的符號:
%:通配符,表示一個或多個字符,譬如LIKE jack% 將找到所有以jack為起頭的字符串文字,LIKE %jack%則找到包括jack的字符串文字。
_:字元的通配符,譬如LIKE jack_ 會找出如jack1、jacka等字串文字,LIKE _jack_ 則找出如ajackb、cjackf等字符串文字。
[xy]:指定字元範圍,譬如LIKE [ac]jack 會找出如ajack1、bjack、cjack等字符串文字。
[^xy]:指定排除的字元範圍,譬如LIKE [^ac]jack 將找不到如ajack1、bjack、cjack等字符串文字。
下例中,會得到以字母A做為開頭而其後接著介於B到G之間的任何字母和一個數字的資料:
Like "A[BG]#"
IN
IN運算式,限定範圍。
語法為:
expr [Not] In(value1, value2,…)
其中expr為運算式欄位。 value1, value2, …為指定的範圍清單。
例如,您可以使用In運算子,來指定學生必須居住的城市,為廣州市、深圳市、或汕頭市:
SELECT *
FROM 學生
WHERE 城市In ('廣州市','深圳市','汕頭市')
讓我們來看一個ASP程式使用這個SQL指令的範例。
我們可以利用IN子句決定範圍,譬如ASP程序rs24.asp如下,[SELECT 姓名,科目,分數From 考試Where 分數In (SELECT 分數From 考試Where 分數>=60)],使用IN找出分數大於或等於60分的記錄:
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Set rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "SELECT 姓名,科目,分數From 考試Where 分數In (SELECT 分數From 考試Where 分數>=60)"
rs2.Open SqlStr,conn1,1,1
Response.Write "<p>In: 低於60分不算"
Do while not rs2.EOF
Response.Write "<BR>" & rs2("姓名") & " " & rs2("科目") & " 分數: " & rs2("分數")
rs2.MoveNext
Loop
rs2.Close
%>
以上的ASP程式rs24.asp,在用戶端使用瀏覽器,瀏覽執行的結果,顯示分數大於或等於60分的記錄。
NOT IN
NOT IN運算式,表示不屬於所指定的範圍。
讓我們來看一個在ASP程式中使用這個SQL指令的範例。
我們可以利用Not In子句決定不應該顯示的記錄,譬如ASP程序rs24.asp如下,[SELECT 姓名,科目,分數From 考試Where 分數Not In (SELECT 分數From 考試Where 分數>=60)],使用IN求出分數不大於或等於60分的記錄,即小於60分的記錄:
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ=" & Server.MapPath("ntopsamp.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
Set rs2 = Server.CreateObject("ADODB.Recordset")
SqlStr = "SELECT 姓名,科目,分數From 考試Where 分數Not In (SELECT 分數From 考試Where 分數>=60)"
rs2.Open SqlStr,conn1,1,1
Response.Write "<p>Not In: 高於60分不算"
Do while not rs2.EOF
Response.Write "<BR>" & rs2("姓名") & " " & rs2("科目") & " 分數: " & rs2("分數")
rs2.MoveNext
Loop
rs2.Close
%>
以上的ASP程式rs24.asp,在用戶端使用瀏覽器,瀏覽執行的結果,顯示分數不大於或等於60分的記錄