搜索结果后对 SQL 查询进行排序
Posted
技术标签:
【中文标题】搜索结果后对 SQL 查询进行排序【英文标题】:Sorting SQL query after search result 【发布时间】:2021-08-19 08:54:22 【问题描述】:我有一个包含 FULL_NAME 列的表,我正在搜索并获取结果。我需要按搜索位置(搜索词)对这些列进行排序。
Example Of data
Column (FULL_NAME)
ID | FULL_NAME |
---|---|
1 | zaid said Alabri |
2 | said sleem salim AlAhmedi |
3 | salim zaid Ahmed AlZaid |
4 | Ahmed said zaid AlSalimi |
搜索示例:
SELECT FULL_NAME
FROM Table
WHERE(FULL_NAME LIKE N'%ِAhmed%')
我需要这样的结果
ID | FULL_NAME |
---|---|
1 | Ahmed said zaid AlSalimi |
2 | said Ahmed salim AlAhmedi |
3 | salim zaid Ahmed AlZaid |
4 | said sleem salim AlAhmedi |
这是我在查询结果后按位置排序的结果。
【问题讨论】:
你的 DBMS 是什么? 顺便说一句,你是指字符位置,还是单词位置? MSSQL -WORD POSITION ty:) 【参考方案1】:由于您已将 SQL Server 标记为数据库,请尝试以下操作:
select *
from table
where full_name like N'%Ahmed%'
order by charindex('Ahmed',full_name,1)
【讨论】:
我试过但位置不对,谢谢你的回答 @NicedMoral 这个答案有什么问题? @Charlieface 在你改变你作为 samir 解决方案重播之前它不起作用 XD【参考方案2】:这样的事情可能对你有用:
select *
from table
where full_name like N'%Ahmed%'
order by charindex(N'Ahmed', full_name)
charindex
函数返回搜索匹配字符串的字符编号。
【讨论】:
已更改为 sql server【参考方案3】:我认为如果您使用的是 SQL 服务器,您可以使用 CHARIndex 来使用条件顺序 如下
SELECT EnglishName
FROM Employees
where EnglishName like N'%Ahmed%'
order by charindex(N'Ahmed',EnglishName,1)
【讨论】:
case = true 的条件 艾哈迈德请删除条件,它也会起作用以上是关于搜索结果后对 SQL 查询进行排序的主要内容,如果未能解决你的问题,请参考以下文章
关于PageHelper分页问题。我用PageHelper分页查询后对查询的结果进行添加删除操作后,怎样保证pageInfo
按查询的where子句中的字段顺序对sql查询的结果进行排序