导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

再请大家帮忙修改一条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含有这样内容记录也能搜索出来。
...全文
56 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
aileenpp 2008-01-23
那我为什么用[^A-z]呢?不就是为了比较方便吗,
高手把[^A-z]%[^A-z]一下不就行了吗?我原先的语句那么简单,现在搞成那么复杂干什么
回复
那个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]%'
回复
--上面的有问题,这个好像没问题了
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%' --这个原来好像没要求
回复
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'
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告