mysql在排序时将包含字母的字段视为最低值

Jmu*_*sul 2 mysql sql

我有一个包含列号(x)的表,其中包含两个数字字母.我用的时候

ORDER BY x DESC 
Run Code Online (Sandbox Code Playgroud)

它将包含字母的字段放在顶部.如何将包含字母的字段视为最低值?

Gor*_*off 5

您可以在以下位置使用案例陈述order by:

order by (case when left(x, 1) between '0' and '9' then 0 else 1 end),
         x desc
Run Code Online (Sandbox Code Playgroud)

编辑:

如果你想包含的字段一个在顶部的信:

order by (case when x like '%[a-zA-Z]%' then 0 else 1 end),
         x desc;
Run Code Online (Sandbox Code Playgroud)

如果您想要在顶部包含字母的字段:

order by (case when x not like '%[^a-zA-Z]%' then 0 else 1 end),
         x desc;
Run Code Online (Sandbox Code Playgroud)

如果您想要底部包含数字的字段:

order by (case when x not like '%[^0-9]%' then 1 else 0 end),
         x desc;
Run Code Online (Sandbox Code Playgroud)