我有or
逻辑运算符的select查询,如下所示:
SELECT * FROM grabli_new.product where article like '%AV2%' or article like '%AV22%';
我需要按“类似模式的长度”排序结果集(在我的情况'%AV22%'
中包含最长模式的行必须在结果集的开头)。查询必须在开头返回包含'%AV22%'
模式的所有结果,然后才返回包含'%AV2%'
模式的所有结果。有可能吗?
答案 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