模糊查询排序问题

xxsoft 2006-04-04 04:34:22
declare @keyword varchar(50)
set @keyword = 'sh'
select * from testft where contains(username, @keyword)

结果要以 keyword 出现在频率从大到小排列,怎样写where 后面的?
...全文
122 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxsoft 2006-04-04
  • 打赏
  • 举报
回复
谢谢!通过
dulei115 2006-04-04
  • 打赏
  • 举报
回复
--测试通过
if object_id('testft') is not null drop table testft
go
select 'bbbshbcdefg' as username
into testft
union select 'aaashbcshbc'
union select 'defgshhhshsh'

declare @keyword varchar(50)
set @keyword = 'sh'
select *
from testft
where username like '%' + @keyword + '%'
order by len(username) - len(replace(username, @keyword, '')) desc
/*
username
------------
defgshhhshsh
aaashbcshbc
bbbshbcdefg
*/
drop table testft
dulei115 2006-04-04
  • 打赏
  • 举报
回复
declare @keyword varchar(50)
set @keyword = 'abc'
select *
from testft
where username like '%' + @keyword + '%'
order by len(username) - len(replace(username, @keyword, '')) desc
dulei115 2006-04-04
  • 打赏
  • 举报
回复
declare @keyword varchar(50)
set @keyword = 'sh'
select *
from testft
where contains(username, @keyword)
--试试这个
order by len(username) - len(replace(username, @keyword, '')) desc
xxsoft 2006-04-04
  • 打赏
  • 举报
回复
老兄,你没理解到我的意思哦。。

declare @keyword varchar(50)
set @keyword = 'sh'
select * from testft where contains(username, @keyword)

结果要以 keyword 出现在频率从大到小排列,怎样写where 后面的?

我是建立了全文检索,现在要对username 这个字段搜索, 检索出来的结果要以 该字段出现这个
关键字次数最多到最少进行排序!
eddy8863 2006-04-04
  • 打赏
  • 举报
回复
select * from testft where username like '%sh%'
eddy8863 2006-04-04
  • 打赏
  • 举报
回复
select * from testft where username like %sh%
eddy8863 2006-04-04
  • 打赏
  • 举报
回复
select * from testft where username like %sh

34,576

社区成员

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

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