如何在SQL中为数值型属性补充前置0 使其全部统一为10位长度
问题解答
完全可以通过SQL查询实现该需求,不需要在Excel中操作,不同主流数据库均有内置函数可以快速完成数值型ID前导补0、统一长度为10位的需求。
各主流数据库实现代码
- MySQL
使用LPAD函数,先将数值型ID转为字符串再补位:
SELECT LPAD(CAST(id AS CHAR), 10, '0') AS formatted_id FROM 你的表名;
- PostgreSQL
同样支持LPAD函数,语法如下:
SELECT LPAD(id::TEXT, 10, '0') AS formatted_id FROM 你的表名;
- SQL Server
通过字符串拼接+截取的方式实现:
SELECT RIGHT('0000000000' + CAST(id AS VARCHAR(10)), 10) AS formatted_id FROM 你的表名;
- Oracle
使用TO_CHAR格式化函数直接指定输出格式:
SELECT TO_CHAR(id, 'FM0000000000') AS formatted_id FROM 你的表名;
其中格式符前缀FM用于去除默认生成的前置空格。
注意事项
- 补0后的输出结果为字符串类型,不再是数值类型,若需要永久保存该结果,建议新增字符串类型字段存储格式化后的ID。
- 若存在ID本身长度超过10位的情况,以上代码会截断超出部分,建议先执行
SELECT id FROM 你的表名 WHERE LENGTH(CAST(id AS CHAR)) >10校验是否存在超长ID,再正式使用格式化语句。
内容的提问来源于stack exchange,提问作者Narutoooo
相关产品推荐
相关产品推荐

