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
这在值为整数时有效。
我有一个 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
这在值为整数时有效。