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