两天了问题没解决,求教SQL语句,急切中....

zhlym 2003-09-15 05:29:34
数据库字段如
autoid officename proname indate username
1 天成酒店 酒杯 2003-9-5 00000
2 天成酒店 光盘 2003-9-5 00000
3 天成酒店 电话 2003-9-7 00000
3 天成酒店 酒饼 2003-9-7 00000

SQL="select * from sell where officename='"&trim(request.cookies("Myoffice"))&"' and (instr(indate,'"&Keyword&"') or instr(proname,'"&Keyword&"')) order by autoid desc "
如Keyword关健词为2003,它就把数据库里所有indate有2003的记录读出来,
如Keyword关健词为2003-9,它就把数据库里所有indate有2003-9的记录读出来,
如Keyword关健词为2003-9-5,它就把数据库里所有indate有2003-9-5的记录读出来,
如Keyword关健词为"酒",它就把数据库里所有proname有"酒"字的记录读出来,类推,就是这个功能,
这个功能要用在SQL数据库,语句怎写?上句不能用于SQL
...全文
41 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
iwodgirl 2003-09-16
  • 打赏
  • 举报
回复
想出来了,快来结帖吧。

这是我来用测试的句子:
select *, replace((str(year(indate))+'-'+str(month(indate))+'-'+str(day(indate))),' ','') as abc from sell

你要的:
SQL="select * from sell where officename='"&trim(request.cookies("Myoffice"))&"' and replace((str(year(indate))+'-'+str(month(indate))+'-'+str(day(indate))),' ','') like '%'+Keyword+'%' or proname like '%'+Keyword+'%' order by autoid desc "

如果连接符号不对,你可以换着试试:
'%" & keyword & "%'和 '%'+kenword+'%'

我正在学sql,愿交朋友的加我QQ:250853520
iwodgirl 2003-09-16
  • 打赏
  • 举报
回复
我在试验时,

'%" & keyword & "%'

这种语句会出错,而'%'+kenword+'%'就可以,为什么这样,我也不明白。

呵呵。。我也是才学,说的不对,大家给以指正。
iwodgirl 2003-09-16
  • 打赏
  • 举报
回复
这个语句要写好长:写起来好头痛!
我开个头,余下的慢慢写,如果说的有理,就给点分。

select *, convert(varchar,indate)as abc from sell
where (convert(varchar,indate) like '%'+substring('2003-9-5',1,4)+'%' and (len('2003-9-5')>=4) and .........................

对于你这个sql语句主要是对时间的判断,而时间要分好多种:
1、只有年,如2003
2、有年和月,如:2003-1,在这里又有要注意的地方,2003-11这种月份为1字节跟2字节也要做判断。
3、有年和月和日,这个更复杂,可根据2的道理来推。
为什么会这样呢?
原因是:
convert(varchar,indate) 如果这里的indate=2003-09-05 00:00:00.000
得到convert(varchar,indate)=09 5 2003 12:00AM

由这个,便不能直接查找,必需对convert(varchar,indate)的值进行切割与所查时间值比较。
Tonglu 2003-09-16
  • 打赏
  • 举报
回复
其实如果不行的话你可以找出问题的所在稍加修改就可以了
大家给你提的建议都是非常好而且实用的,只要你自己稍加修改再用绝对没有问题
不要不想信自己试试看!
zhlym 2003-09-16
  • 打赏
  • 举报
回复
help me
philorlogin 2003-09-15
  • 打赏
  • 举报
回复
up!
zhlym 2003-09-15
  • 打赏
  • 举报
回复
高手们觉得这问题太低不舍得出手吗?
zhlym 2003-09-15
  • 打赏
  • 举报
回复
SQL="select * from sell where officename='"&trim(request.cookies("Myoffice"))&"' and (indate like '"&Keyword&"%' or proname like '%"&Keyword&"%') order by autoid desc "这样是没问题,可是如Keyword关健词为2003-9,它却不能把数据库里所有indate有2003-9的记录读出来,这为什么?
ljupin 2003-09-15
  • 打赏
  • 举报
回复
SQL="select * from sell where officename='"&trim(request.cookies("Myoffice"))&"' and (indate like '"&Keyword&"%' or proname like '%"&Keyword&"%') order by autoid desc "

这样好象没问题吧,indate从开头匹配,proname任何部分
zhlym 2003-09-15
  • 打赏
  • 举报
回复
以上语句全都试过,没有一条满足我的要求,在虾们再帮想想办法,indate是时间类型
NetBoy 2003-09-15
  • 打赏
  • 举报
回复
sql="select * from sell where officename"='"&trim(request.cookies("Myoffice"))&"' and proname+convert(nvarchar,indate) like '%keyword%'"
跟楼上的差不多哦,gz
mailguoyy 2003-09-15
  • 打赏
  • 举报
回复
up
Brookes 2003-09-15
  • 打赏
  • 举报
回复
sql="select * from sell where officename+proname+convert(nvarchar,indate) like '%" & keyword & "%'"
61 2003-09-15
  • 打赏
  • 举报
回复
SQL="select * from sell where officename='"&trim(request.cookies("Myoffice"))&"' and indate like '%" & Keyword & "%' or proname like '%" & Keyword & " %' order by autoid desc "
61 2003-09-15
  • 打赏
  • 举报
回复
SQL="select * from sell where officename='"&trim(request.cookies("Myoffice"))&"' and (indate like '%" & Keyword & "%') or (proname like '%" & Keyword & " %')) order by autoid desc "

28,406

社区成员

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

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