选择案例搜索选项

时间:2015-05-22 21:34:35

标签: vbscript

我有一个ASP查询表单,其中包括一个文本框,允许用户输入一些可以在数据库中搜索的文本。不幸的是,只有在输入的确切字符串匹配时,搜索才会返回结果。有没有办法改变这个,以便返回部分匹配的结果,或者如果数据库中的内容包括全部或部分搜索字符串?

代码如下,有问题的案例是名为“Nam”的案例。请注意,我通过添加asterix通配符功能解决了这个问题,但我真的只是想避免完全使用asterix。我选择保留通配符的额外代码,以免使事情复杂化。

Select Case strOption
    Case "Nam" 
    strSelect = strSelect & " Nam='" & UCase(strNam) & "'"

    Case "Location" 
    strSelect = strSelect & " Location='" & UCase(strLocation) & "'"

    Case "Typ"
    strSelect = strSelect & " Typ='" & UCase(strTyp) & "'"

    Case "Season"
    strSelect = strSelect & " Season='" & UCase(strSeason) & "'"

    Case "Duration"
    strSelect = strSelect & " Duration='" & UCase(strDuration) & "'"

    Case "Yr"
    strSelect = strSelect & " Yr='" & UCase(strYr) & "'"
End Select

1 个答案:

答案 0 :(得分:1)

它更多地关于SQL而不是VBScript。根据{{​​3}}文档,任何比较逻辑运算符都会返回值为TRUEFALSE的布尔数据类型,或UNKNOWN。更重要的是可以使用有问题的运算符阅读构建 a Operators;简而言之:

  • =(等于)是用于测试两个表达式之间的相等的运算符;
  • LIKE表示后续字符串将与模式匹配一​​起使用,如果操作数与模式search condition (a combination of one or more predicates)匹配,则返回TRUE;模式可以包含以下有效的通配符
    • %任何零个或多个字符的字符串;
    • _(下划线)任何单个字符;
    • []指定范围内的任何单个字符([a-f])或设置([abcdef]);
    • [^]任何不在指定范围内([^a-f])或设置([^abcdef])的单个字符。

因此,您可以在搜索条件{(1)}中根据VBScript制定谓词,如下所示:

Nam