在MySQL数据库中以INTEGER存储整数的前导零 [英] Storing leading zeros of integers in MySQL database as INTEGER

查看:552
本文介绍了在MySQL数据库中以INTEGER存储整数的前导零的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要MySQL将数字存储在整数字段中并保持前导零。我不能使用zerofill选项,因为我的当前字段是Bigint(16),并且数字可以在前导零的数量上变化。 IE:0001- 0005,然后可能需要存储008-010。我不关心数字的唯一性(这些不被用作ID或任何东西)但我仍然需要将它们优选地存储为INTS。

I need MySQL to store numbers in a integer field and maintain leading zeros. I cannot use the zerofill option as my current field is Bigint(16) and numbers can vary in amount of leading zeros. IE: 0001 - 0005, then 008 - 010 may need to be stored. I am not concerned about uniqueness of numbers (these aren't being used as IDs or anything) but I still need them to be stored preferably as INTS.

使用CHAR / VARCHAR然后在PHP中将值类型转换为整数的问题意味着通过查询对结果进行排序会导致字母数字排序,IE:SORT BY数字ASC会产生

The issue using CHAR/VARCHAR and then typecasting the values as integers in PHP means that sorting results via queries leads to alphanumeric sorting, IE: SORT BY number ASC would produce

001
002
003
1
100
101
102
2

显然不是按数字顺序排列,而是按字母数字顺序排列,不希望。

Clearly not in numerical order, but in alphanumeric order, which isn't wanted.

希望有一些聪明的解决方法:)

Hoping for some clever workarounds :)

推荐答案

将数字保存为整数。

然后使用函数 LPAD() 显示填充的数字(左)零:

Then use function LPAD() to show the numbers (left) padded with zeros:

SELECT LPAD( 14, 7, '0') AS padded;

| padded  |
-----------
| 0000014 |

如果zerofill字符的数量是可变的,请在表格中添加另一列(zerofill)长度。

If the number of zerofill characters is variable, add another column in the table with that (zerofill) length.

这篇关于在MySQL数据库中以INTEGER存储整数的前导零的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆