sql-server 如何在SQL中为id添加前导零

vwkv1x7d  于 2022-10-31  发布在  其他
关注(0)|答案(1)|浏览(241)

客户Id有一个无法排序的问题,这是因为客户id被设计成前面有一个字母,因此id C10、C11、C12等会出现在C2之前。为了解决这个问题,我们决定匹配最大id的位数;例如,如果最大的客户id是C182,则此id有3位数,这意味着我们将向2位数的id添加1个零,并向仅1位数的id添加2个零(例如:C81将变为C 081,C7将变为C 007)。
这样做将有助于在需要时对id进行排序。我们如何在SQL中解决这个问题?

gmxoilav

gmxoilav1#

您可以使用两种方法来执行此操作。

方法1

从id中移除'C',并将其转换为整数,然后在order by子句中使用它。

select * from your_table
order by cast(replace(id, 'C', '') as int);

方法2

如果你需要根据id列中的数字进行排序,那么我们可以简单地根据id列的长度进行排序,然后再根据id本身进行排序。

select * from your_table
order by len(id), id;

在此处查找演示

相关问题