将 MySQL 数据库中整数的前导零作为 INTEGER 存储

2022-08-30 18:24:13

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

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

001
002
003
1
100
101
102
2

显然不是按数字顺序,而是按字母数字顺序,这是不想要的。

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


答案 1

将数字存储为整数。

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

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

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

如果零填充字符数是可变的,请在表中添加另一列具有该(零填充)长度的列。


答案 2

更改字段的结构,并使属性保持为零。UNSIGNED_ZEROFILL

但是您应该小心字段的长度,因为它会将所有其余数字返回为零,因此请输入字段的长度


推荐