搜索结果后对 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查询的结果进行排序

SQL对查询结果进行分组

mysql查询结果排序

php 按对象属性对对象数组进行排序。示例:查询后对Wordpress帖子进行排序

sql 从连接的查询中获取所有列,搜索列名并对其进行排序