mysql中的int能存储为001这样的形式吗?

killyourdidi 2010-09-03 03:11:29
RT
我想把id存储为001这样的3位格式 但自动被忽略掉前面的0 怎么办?
...全文
1620 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
feixianxxx 2010-09-03
  • 打赏
  • 举报
回复
如果只是想存储
可以使用zerofill来实现



mysql> use test
Database changed
mysql> drop table if exists tb;
Query OK, 0 rows affected (0.16 sec)

mysql> create table tb(id int(3) zerofill );
Query OK, 0 rows affected (0.09 sec)

mysql> insert tb select 1
-> union all select 2
-> union all select 3;
Query OK, 3 rows affected (0.07 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql> select * from tb;
+------+
| id |
+------+
| 001 |
| 002 |
| 003 |
+------+
3 rows in set (0.00 sec)
ACMAIN_CHM 2010-09-03
  • 打赏
  • 举报
回复
但这个设置仅对MYSQL内部有用,即如果你是通过ADO,C#去访问,结果仍会是不带0的。
数字的存储格式,和数字的显示格式是不同的事情。 数据库本身只负责数据据的存储,显示则应该由你的程序来完成。不建议你在数据库中进行此类设置。
wwwwb 2010-09-03
  • 打赏
  • 举报
回复
CREATE TABLE ttp2(id INT(3) ZEROFILL)
ACMAIN_CHM 2010-09-03
  • 打赏
  • 举报
回复
MYSQL自身环境中可以

对于声明为INT(5) ZEROFILL的列,值4检索为00004

[Quote]11.2. 数值类型
MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。

BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。

作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

类型
字节
最小值
最大值



(带符号的/无符号的)
(带符号的/无符号的)

TINYINT
1
-128
127



0
255

SMALLINT
2
-32768
32767



0
65535

MEDIUMINT
3
-8388608
8388607



0
16777215

INT
4
-2147483648
2147483647



0
4294967295

BIGINT
8
-9223372036854775808
9223372036854775807



0
18446744073709551615


MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。

显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。

当结合可选扩展属性ZEROFILL使用时, 默认补充的空格用零代替。例如,对于声明为INT(5) ZEROFILL的列,值4检索为00004。请注意如果在整数列保存超过显示宽度的一个值,当MySQL为复杂联接生成临时表时会遇到问题,因为在这些情况下MySQL相信数据适合原列宽度。

[/Quote]

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧