id | col1 | col2 |
_________________________
1 | Aceh | Denponda
2 | Aceh | Bonda Aceh
3 | Sumatera | Asahan
4 | Sumatera | Ondanar
我使用这个查询
SELECT * FROM table WHERe col2 LIKE '%onda%'
现在显示的结果是这样的
id | col1 | col2 |
_________________________
1 | Aceh | Denponda
2 | Aceh | Bonda Aceh
4 | Sumatera | Ondanar
但我想要的是id为4的行在WHERE子句的相似性上最接近第一名即onda
这是我想要的结果
id | col1 | col2 |
_________________________
4 | Sumatera | Ondanar
2 | Aceh | Bonda Aceh
1 | Aceh | Denponda
基本上我这里想要的是相应地排序结果根据col2从左到右的值,找到与WHERE子句最相似的onda
逻辑上像这样
- 昂达 nar
- Bonda亚齐
- Denp 昂达
注意:id
列不能用于排序
你可以命令 LOCATE
SELECT
*
FROM table
WHERE col2 LIKE '%onda%'
ORDER BY LOCATE('onda', col2)
注意:
LOCATE(substr,str), LOCATE(substr,str,pos)
第一种语法返回第一次出现的位置substring substrin string str.第二种语法返回位置子字符串substr在字符串str中第一次出现,从如果substr不在str中,返回0。
也可以使用 INSTR
function