日期:2014-05-17  浏览次数:20463 次

着急:按搜索精确度排序的问题!
我有一个表users,有字段name,address,等,我想查模糊查询name,(mname like '%" & keywords & "%')搜索关键词:张丽,查出比如:张丽丽,张丽,张丽理,张丽群等,我想按照精确度来排序,排序:张丽,张丽丽,张丽理,张丽群,最准确的搜索结果在前面,应该怎么办?求救各位,谢谢了

------解决方案--------------------
SQL code
DECLARE @keywords VARCHAR(10)
SET @keywords='张丽'
SELECT * FROM users WHERE PATINDEX('%'+@keywords+'%',name)>0 ORDER BY PATINDEX('%'+@keywords+'%',name)

------解决方案--------------------
SQL code
create table tb(mname varchar(10))
insert into tb values('张丽丽')
insert into tb values('张丽')
insert into tb values('张丽理')
insert into tb values('张丽群')
go

select * from tb where mname like '%张丽%' order by len(mname) , mname

drop table tb

/*
mname      
---------- 
张丽
张丽理
张丽丽
张丽群

(所影响的行数为 4 行)

*/

------解决方案--------------------
SQL code

select *
from tb where mname like '%张丽%' order by isnull(abs(unicode('丽') - unicode(substring(mname,charindex('张丽',mname)+2,1))),0),len(mname) 

mname
----------
张丽
张丽丽
dsaf张丽
张丽理
ds张丽理
张丽群
s张丽群

(7 row(s) affected)