再请大家帮忙修改一条SQL模糊查询的语句。。

aileenpp 2008-01-23 11:22:02
我的一条搜索语句:
select * from message
where ' '+(title+' '+content)+' '
like '%[^A-z]cement[^A-z]%[^A-z]opc[^A-z]%clinker[^A-z]%'
搜索的关键词为cement opc clinker
这样写语句可以控制每个关键词的前一个跟后一个字符不为英文字母但是还有个问题:
如果content内容为:cement opc clinker这样单词间只有一个空格连在一起的字段内容就没法搜索出来,
原因用于搜索的语句中有“[^A-z]%[^A-z]”这就必须需要2个关键词中间必须间隔2个字符。
请高手给修改一下。让这条语句可以把。cement opc clinker含有这样内容记录也能搜索出来。
...全文
124 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
aileenpp 2008-01-23
  • 打赏
  • 举报
回复
那我为什么用[^A-z]呢?不就是为了比较方便吗,
高手把[^A-z]%[^A-z]一下不就行了吗?我原先的语句那么简单,现在搞成那么复杂干什么
昵称被占用了 2008-01-23
  • 打赏
  • 举报
回复
那个and的很好拼的
aileenpp 2008-01-23
  • 打赏
  • 举报
回复
我开始的SQL语句少了个东西。
这个是完整的:
select * from message
where ' '+(title+' '+content)+' '
like '%[^A-z]cement[^A-z]%[^A-z]opc[^A-z]%[^A-z]clinker[^A-z]%'
aileenpp 2008-01-23
  • 打赏
  • 举报
回复
大哥太扯了把,搜索的关键词是动态的。
如果搜索的关键词有5个你要OR到什么时候?
关键是希望高手能把[^A-z]%[^A-z]这个改掉。。。。
别那么多OR搜索根本没效率
yang_dgut 2008-01-23
  • 打赏
  • 举报
回复
select * from message
where ''+(title+' '+content)+''
like '[^A-z]%cement[^A-z]%opc[^A-z]%clinker[^A-z]%'
or
''+(title+' '+content)+''
like 'cement[^A-z]%[^A-z]opc[^A-z]%clinker'
or
''+(title+' '+content)+''
like '[^A-z]%cement[^A-z]%opc[^A-z]%clinker'
or
''+(title+' '+content)+''
like 'cement[^A-z]%opc[^A-z]%clinker[^A-z]%'
yang_dgut 2008-01-23
  • 打赏
  • 举报
回复
這樣吧!!!

select * from message
where ''+(title+' '+content)+''
like '%[^A-z]cement[^A-z]%[^A-z]opc[^A-z]%clinker[^A-z]%'
or
''+(title+' '+content)+''
like 'cement[^A-z]%[^A-z]opc[^A-z]%clinker'
or
''+(title+' '+content)+''
like '%[^A-z]cement[^A-z]%[^A-z]opc[^A-z]%clinker'
or
''+(title+' '+content)+''
like 'cement[^A-z]%[^A-z]opc[^A-z]%clinker[^A-z]%'
昵称被占用了 2008-01-23
  • 打赏
  • 举报
回复
--上面的有问题,这个好像没问题了
select * from message
where ' '+(title+' '+content)+' '
like '%cement%opc%clinker%'
and ' '+(title+' '+content)+' '
not like '%[A-z]cement%opc%clinker%'
and ' '+(title+' '+content)+' '
not like '%cement[A-z]%opc%clinker%'
and ' '+(title+' '+content)+' '
not like '%cement%[A-z]opc%clinker%'
and ' '+(title+' '+content)+' '
not like '%cement%opc[A-z]%clinker%'
and ' '+(title+' '+content)+' '
not like '%cement%opc%clinker[A-z]%'
--and ' '+(title+' '+content)+' ' not like '%cement%opc%[A-z]clinker%' --这个原来好像没要求
昵称被占用了 2008-01-23
  • 打赏
  • 举报
回复
Try:

select   *   from   message 
where ' '+(title+' '+content)+' '
like '%[^A-z]cement[^A-z]%[^A-z]opc[^A-z]%clinker[^A-z]%'
or ' '+(title+' '+content)+' '
like 'cement[^A-z]%[^A-z]opc[^A-z]%clinker[^A-z]%'
or ' '+(title+' '+content)+' '
like 'cement[^A-z]%[^A-z]opc[^A-z]%clinker'
or ' '+(title+' '+content)+' '
like '%[^A-z]cement[^A-z]%[^A-z]opc[^A-z]%clinker'

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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