关于asp(SQL Server)通配符的问题

thom_ren 2005-05-12 07:36:45
我想实现类似于windows操作系统的搜索,就是类似于搜索1*23*789,中间的*代表通配符,匹配任意个任意字符
我只知道模糊搜索,是在字符前后加%,但这个搜索我不是很清楚,请指教下,谢谢
...全文
242 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
eyun 2005-05-17
  • 打赏
  • 举报
回复
这样啊,几可以在接收字符窜的时候用splist函数进行处理,然后写入sql语句中
thom_ren 2005-05-16
  • 打赏
  • 举报
回复
普通的模糊查询是
输入张三
你会得到
张三二
张三二一
一张三
二一张三

我现在要做的通配符是
输入 张*三 //*是通配符
会得到
张一三
张一二三

其实就是类似于google的空格的作用
eyun 2005-05-16
  • 打赏
  • 举报
回复
你说的是什么意思啊。
“通配符的查询”是什么意思啊
thom_ren 2005-05-16
  • 打赏
  • 举报
回复
但我要做个通配符的查询,光是模糊查询还不行
miaoo 2005-05-16
  • 打赏
  • 举报
回复
set rs= Server.CreateObject("Adodb.Recordset")

keyword=request.Form("username")
keyword=replace(trim(keyword)," ","%")

sql=select * from list where username like '%"&keyword&"%'"

rs.open sql,conn,1,3
thom_ren 2005-05-16
  • 打赏
  • 举报
回复
sql="select * from list where username like '%"&keyword(i)&"%'"

请问这句查询用了"&keyword(i)&"就不行了,为什么,提示是类型不匹配

代码是
set rs= Server.CreateObject("Adodb.Recordset")
sql="select * from list"
keyword=request.Form("username")
temp=split(keyword," ")
for i=0 to ubound(temp)
sql=sql&"select * from list where username like '%"&keyword(i)&"%'"
next
rs.open sql,conn,1,3
zyqiiy 2005-05-14
  • 打赏
  • 举报
回复
sql="select * from list where user like '张%三'"
wensyCool 2005-05-14
  • 打赏
  • 举报
回复
通配符 %
描述 包含零个或更多字符的任意字符串。
示例 WHERE title LIKE '%computer%'将查找处于书名任意位置的包含单词 computer 的所有书名。

通配符 _(下划线)
描述 任何单个字符。
示例 WHERE au_fname LIKE '_ean' 将查找以 ean 结尾的所有 4 个字母的名字(Dean、Sean 等)。

通配符 [ ]
描述 指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符。
示例 WHERE au_lname LIKE '[C-P]arsen' 将查找以arsen 结尾且以介于 C 与 P 之间的任何单个字符开始的作者姓氏,例如,Carsen、Larsen、Karsen 等。

通配符 [^]
描述 不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符。
示例 WHERE au_lname LIKE 'de[^l]%' 将查找以 de 开始且其后的字母不为 l 的所有作者的姓氏。

将通配符作为文字使用

可以将通配符模式匹配字符串用作文字字符串,方法是将通配符放在括号中。下表显示了使用 LIKE 关键字和 [ ] 通配符的示例。

符号 含义
LIKE '5[%]' 5%
LIKE '[_]n' _n
LIKE '[a-cdf]' a、b、c、d 或 f
LIKE '[-acdf]' -、a、c、d 或 f
LIKE '[ [ ]' [
LIKE ']' ]
LIKE 'abc[_]d%' abc_d 和 abc_de
LIKE 'abc[def]' abcd、abce 和 abcf

使用 ESCAPE 子句的模式匹配

可搜索包含一个或多个特殊通配符的字符串。例如,customers 数据库中的 discounts 表可能存储含百分号 (%) 的折扣值。若要搜索作为字符而不是通配符的百分号,必须提供 ESCAPE 关键字和转义符。例如,一个样本数据库包含名为 comment 的列,该列含文本 30%。若要搜索在 comment 列中的任何位置包含字符串 30% 的任何行,请指定由 WHERE comment LIKE '%30!%%' ESCAPE '!' 组成的 WHERE 子句。如果不指定 ESCAPE 和转义符,SQL Server 将返回所有含字符串 30 的行。

下例说明如何在 pubs 数据库 titles 表的 notes 列中搜索字符串"50% off when 100 or more copies are purchased":

SELECT notes FROM titles WHERE notes LIKE '50%% off when 100 or more copies are purchased' ESCAPE '%'

zyqiiy 2005-05-13
  • 打赏
  • 举报
回复
为什么要那样查呢???如果要模糊查询 张三的话,直接输入 张 就可以了啊。不用写函数的。
sql="select * from list where user='"& %张% &"'"
li_chao 2005-05-13
  • 打赏
  • 举报
回复
<!-- like子句 -->
<!-- (1)基本格式一:"_"匹配。

说明:每个下划线匹配一个任意字符,注意只匹配一个字符。比如:姓名 like '_敏',匹配姓名以"敏"字结尾且字数为2的所有数据记录,如“张敏”

(2)基本格式二:"%"匹配。

说明:比如--姓名 like '%敏%',匹配姓名中出现"敏"的所有数据记录,如:"周慧敏","张敏"等等。

例子,要在数据库表中查询姓江的人,只要利用一条sql语句就可以了。
select * from 数据库表 where 姓名 like '江%'
即可!
bingcha325 2005-05-13
  • 打赏
  • 举报
回复
sql="select * from list where user like '%"& 张 &"%'"
netwar 2005-05-13
  • 打赏
  • 举报
回复
sql="select * from list where user='"& %张% &"'"
改为
%代表多个字符
sql="select * from list where user='张%三'"
thom_ren 2005-05-13
  • 打赏
  • 举报
回复
sql="select * from list where user='"& %张% &"'"
但这样的话只能模糊查询带张这个字的名字啊,我要查第一个是张最后一个是三中间任意的所以名字
thom_ren 2005-05-12
  • 打赏
  • 举报
回复
如果输入的查询字符是 张*三
那是不是应该这样sql查询
sql="select * from list where user='"张%三"'"
我想写个function,但不是很懂,比较菜,

function wildcard(key)
dim word,i
word = split(key,"*")
i=Lbound(word) to ubound(word)

后面就不知道怎么写了,谁提示下
CXL_2005 2005-05-12
  • 打赏
  • 举报
回复
SQL语言的模糊查询有4中类型

% 包含零个或更多字符的任意字符串。

_(下划线) 任何单个字符。

[ ] 指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符。

[^] 不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符。
thom_ren 2005-05-12
  • 打赏
  • 举报
回复
sql="select * from list where user='"12%56"'"

请问,可以这样吗
是是非非 2005-05-12
  • 打赏
  • 举报
回复
把*换成%就可以了
thom_ren 2005-05-12
  • 打赏
  • 举报
回复
help

28,405

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧