MySQL" Order By"询问

时间:2014-10-13 10:32:23

标签: mysql sql

我有or逻辑运算符的select查询,如下所示:

SELECT * FROM grabli_new.product where article like '%AV2%' or article like '%AV22%';

我需要按“类似模式的长度”排序结果集(在我的情况'%AV22%'中包含最长模式的行必须在结果集的开头)。查询必须在开头返回包含'%AV22%'模式的所有结果,然后才返回包含'%AV2%'模式的所有结果。有可能吗?

3 个答案:

答案 0 :(得分:1)

您可以尝试使用以下内容:

SELECT *, case when article like '%AV22%' 
                    then 1 
                    when article like '%AV2%' 
                    then 2 end orderIndex 
FROM grabli_new.product 
where article like '%AV2%' or article like '%AV22%'
order by orderIndex

答案 1 :(得分:0)

如果要计算(多字节)字符,请改用CHAR_LENGTH函数:

ORDER BY CHAR_LENGTH( column )

答案 2 :(得分:-1)

SELECT * 
FROM grabli_new.product 
WHERE article LIKE '%AV2%' OR article LIKE '%AV22%' 
ORDER BY char_length(article) DESC