在ADO使用SELECT語法二

字號:

考試大編輯整理:計(jì)算機(jī)軟考程序員編程輔導(dǎo)
    接上一篇文章:
    WHERE可以使用下面的BETWEEN、LIKE、IN運(yùn)算子。
    Between...And
    Between...And判斷表達(dá)式的值是否落在指定的范圍之中。語法為:
    expr Between value1 And value2
    表示如果expr的值介于value1和value2之間,則Between...And運(yùn)算子會返回True;否則它會返回False。
    您也可以加上邏輯運(yùn)算 Not expr Between value1 And value2,來判斷相反的條件,即expr落在value1和 value 2的范圍之外。
    如果expr、value1、或value2為Null時(shí),則Between...And會返回Null值。
    您不能在 Between...And 運(yùn)算子中使用通配符*,例如,您不能使用 100* 和 500* 來尋找介于1000至5000中的產(chǎn)品代號。
    Like
    Like尋找相符合的關(guān)鍵字。
    Like跟隨一個(gè)運(yùn)算式,列出所要比較的字串或字符串文字。
    在一運(yùn)算式中,您可以使用 Like 運(yùn)算子將一字段資料和一字串運(yùn)算式做一比較。您可以使用通配符*來找出相類似的資料,譬如Like "王*",則查詢會返回所有字段中以 [王] 做為開頭的資料。
    Like后運(yùn)算式可以使用的符號:
    %:通配符,表示一個(gè)或多個(gè)字符,譬如LIKE jack% 將找到所有以jack為起頭的字串文字,LIKE %jack%則找到包括jack的字串文字。
    _:一個(gè)字符的通配符,譬如LIKE jack_ 將找到如jack1、jacka等字串文字,LIKE _jack_ 則找到如ajackb、cjackf等字串文字。
    [x-y]:指定字符范圍,譬如LIKE [a-c]jack 將找到如ajack1、bjack、cjack等字串文字。
    [^x-y]:指定排除的字符范圍,譬如LIKE [^a-c]jack 將不會找到如ajack1、bjack、cjack等字串文字。
    下例中,會得到以字母A做為開頭而其后接著介于B到G之間的任何字母和一個(gè)數(shù)字的資料:
    Like "A[B-G]#"
    IN
    IN運(yùn)算式,限定范圍。
    語法為:
    expr [Not] In(value1, value2,…)
    其中expr為運(yùn)算式字段。value1, value2, …為指定的范圍清單。
    例如,您可以使用In運(yùn)算子,來指定學(xué)生必須居住的城市,為廣州市、深圳市、或汕頭市:
    SELECT *
    FROM 學(xué)生
    WHERE 城市 In ('廣州市','深圳市','汕頭市')
    讓我們看一個(gè)ASP程式使用這個(gè)SQL指令的例子。
    我們可以利用IN子句決定范圍,譬如ASP程式rs24.asp如下,[SELECT 姓名,科目,分?jǐn)?shù) From 考試 Where 分?jǐn)?shù) In (SELECT 分?jǐn)?shù) From 考試 Where 分?jǐn)?shù)>=60)],使用IN找出分?jǐn)?shù)大于或等于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 姓名,科目,分?jǐn)?shù) From 考試 Where 分?jǐn)?shù) In (SELECT 分?jǐn)?shù) From 考試 Where 分?jǐn)?shù)>=60)"
    rs2.Open SqlStr,conn1,1,1
    Response.Write "
    In: 低于60分不算"
    Do while not rs2.EOF
    Response.Write "
    " & rs2("姓名") & " " & rs2("科目") & " 分?jǐn)?shù): " & rs2("分?jǐn)?shù)")
    rs2.MoveNext
    Loop
    rs2.Close
    %>
    以上的ASP程式rs24.asp,在用戶端使用瀏覽器,瀏覽執(zhí)行的結(jié)果,顯示分?jǐn)?shù)大于或等于60分的記錄。
    NOT IN
    NOT IN運(yùn)算式,表示不屬于所指定的范圍。
    讓我們看一個(gè)于ASP程式中使用這個(gè)SQL指令的例子。
    我們可以利用Not In子句決定不應(yīng)顯示的記錄,譬如ASP程式rs24.asp如下,[SELECT 姓名,科目,分?jǐn)?shù) From 考試 Where 分?jǐn)?shù) Not In (SELECT 分?jǐn)?shù) From 考試 Where 分?jǐn)?shù)>=60)],使用IN找出分?jǐn)?shù)不大于或等于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 姓名,科目,分?jǐn)?shù) From 考試 Where 分?jǐn)?shù) Not In (SELECT 分?jǐn)?shù) From 考試 Where 分?jǐn)?shù)>=60)"
    rs2.Open SqlStr,conn1,1,1
    Response.Write "
    Not In: 高于60分不算"
    Do while not rs2.EOF
    Response.Write "
    " & rs2("姓名") & " " & rs2("科目") & " 分?jǐn)?shù): " & rs2("分?jǐn)?shù)")
    rs2.MoveNext
    Loop
    rs2.Close
    %>
    以上的 ASP程式rs24.asp,在用戶端使用瀏覽器,瀏覽執(zhí)行的結(jié)果,顯示分?jǐn)?shù)不大于或等于60分的記錄