SQLite 排序包含字母和数字的 varchar

SQLite sort varchar that contains letter and number

我有一个 table,其中我有包含此数据的字段 traffic_num(varchar)

A100
A586
A4594
A125
A2
A492

现在我想对该数据进行升序排序。如果 traffic_num 只包含数字(没有字母 A),那将非常容易,然后我可以将 varchar 转换为 integer CAST(traffic_num as SIGNED INTEGER) ASC。但是遇到这种情况怎么办呢?

您可以使用 substr 先按第一个字母字符排序,然后再按后面的数字排序。

select * from tablename
order by substr(traffic_num,1,1), cast(substr(traffic_num,2) as signed integer)

一个简单的方法是先按长度排序,然后按值排序:

order by length(traffic_num), traffic_num

这在值为整数时有效。