我有一个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
答案 0 :(得分:1)
它更多地关于SQL
而不是VBScript
。根据{{3}}文档,任何比较和逻辑运算符都会返回值为TRUE
,FALSE
的布尔数据类型,或UNKNOWN
。更重要的是可以使用有问题的运算符阅读构建 a Operators;简而言之:
=
(等于)是用于测试两个表达式之间的相等的运算符; LIKE
表示后续字符串将与模式匹配一起使用,如果操作数与模式search condition (a combination of one or more predicates)匹配,则返回TRUE
;模式可以包含以下有效的通配符:
%
任何零个或多个字符的字符串; _
(下划线)任何单个字符; []
指定范围内的任何单个字符([a-f]
)或设置([abcdef]
); [^]
任何不在指定范围内([^a-f]
)或设置([^abcdef]
)的单个字符。因此,您可以在搜索条件{(1)}中根据VBScript制定谓词,如下所示:
Nam