`
dcj3sjt126com
  • 浏览: 1877775 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

细节问题:ZEROFILL的用法范围。

阅读更多

1、zerofill把月份中的一位数字比如1,2,3等加前导0

mysql> CREATE TABLE t1 (year YEAR(4), month INT(2) UNSIGNED ZEROFILL,
    -> day INT(2) UNSIGNED ZEROFILL);
Query OK, 0 rows affected (0.11 sec)

mysql> INSERT INTO t1 VALUES(2000,1,1),(2000,1,20),(2000,1,30),(2000,2,2)
    -> (2000,2,23),(2000,2,23);
Query OK, 6 rows affected (0.03 sec)
Records: 6 Duplicates: 0 Warnings: 0

mysql> select * from t1;
+------+-------+------+
| year | month | day |
+------+-------+------+
| 2000 | 01 | 01 |
| 2000 | 01 | 20 |
| 2000 | 01 | 30 |
| 2000 | 02 | 02 |
| 2000 | 02 | 23 |
| 2000 | 02 | 23 |
+------+-------+------+
6 rows in set (0.02 sec)

2、如果有这样的需求:一个字段宽度为6个字符,不足的补零,而且又要自动增加。MYSQL现在好像还没有提供这样的功能,这里我用存储过程来实现。

创建表:
Table   Create Table                                                                           
------  ---------------------------------------------------------------------------------------
lk14    CREATE TABLE `lk14` (                                                                  
          `id` int(6) unsigned zerofill NOT NULL DEFAULT '000000',                             
          `str` char(40) DEFAULT NULL,                                                         
          PRIMARY KEY (`id`)                                                                   
        ) ENGINE=MyISAM DEFAULT CHARSET=gb2312 ROW_FORMAT=DYNAMIC COMMENT='InnoDB free: 0 kB'  


创建SP:

DELIMITER $$

DROP PROCEDURE IF EXISTS `test`.`sp_zerofill`$$

CREATE PROCEDURE `test`.`sp_zerofill`(IN num int)
BEGIN
  declare i int default 1;
  -- initialization value
  set @sqltext = 'insert into lk14 values(0,''char0'')';
  -- begin while
  while i < num do
    set @sqltext = concat(@sqltext,',','(',i,',''char',ceil(num*rand()),''')');
    set i = i + 1;
  end while;
  -- begin dynamic sql
  prepare s1 from @sqltext;
  execute s1;
  deallocate prepare s1;
END$$

DELIMITER ;

调用结果:

call sp_zerofill(6);

select * from lk14 order by id;


query result(6 records)

id str
000000 char0
000001 char2
000002 char2
000003 char2
000004 char3
000005 char5

本文出自 “上帝,咱们不见不散!” 博客,转载请与作者联系!

分享到:
评论

相关推荐

    zerofill:填充文件系统中未使用的空间。-开源

    zerofill的作用就是解决这个问题,它会用零字节填充这些未使用的空间,包括那些来自已删除文件的扇区,从而确保数据无法被恢复。 zerofill的0.5.1版本可能包含了一些优化和修复,提高了工具的稳定性和安全性。通常...

    MySql所有字段类型及长度范围

    - **INT[(M)][UNSIGNED][ZEROFILL]** 或 **INTEGER[(M)][UNSIGNED][ZEROFILL]**:INT 和 INTEGER 类型可以互换使用,用于存储标准整数,不指定 UNSIGNED 时,取值范围为 -2147483648 到 2147483647;指定 UNSIGNED ...

    MySQL常见数据类型-数值型.docx

    * 如果数字位数足够或大于,则忽略宽度,如果数字位数不够的空间用字符“0”填满,但要搭配 zerofill 使用。 小数 MySQL 有两种方式:浮点数和定点数。 浮点数 浮点数包括 float 和 double 两种。 * float:...

    MySQL字段类型说明

    * DECIMAL[(M[,D])] [ZEROFILL]:一个未压缩的浮点数字,范围与 DOUBLE 相同,但实际范围可以通过 M 和 D 确定。 在 MySQL 中,浮点数字可以是有符号或无符号的,但不能是无符号的浮点数字。UNSIGNED 属性可以用来...

    mysql 字段类型

    - **取值范围**:最大取值范围与 `DOUBLE` 相同,但有效取值范围由 `M` 和 `D` 决定。如果 `D` 为零,则列值无小数点或小数部分。 - **缺省值**:如果列可以为 `NULL`,则默认为 `NULL`;如果列为 `NOT NULL`,则...

    phpwind数据库表

    - **INT[(M)][UNSIGNED][ZEROFILL]** 或 **INTEGER[(M)][UNSIGNED][ZEROFILL]**:一个正常的整数,有符号的范围是-2147483648到2147483647,无符号的范围是0到4294967295。 - **BIGINT[(M)][UNSIGNED][ZEROFILL]**:...

    第12章_MySQL数据类型.docx

    | 整数类型 | 字节 | 有符号数取值范围 | 无符号数取值范围 | | --- | --- | --- | --- | | TINYINT | 1 | -128~127 | 0~255 | | SMALLINT | 2 | -32768~32767 | 0~65535 | | MEDIUMINT | 3 | -8388608~8388607 | 0~...

    170: Warning: (1681, ‘Integer display width is deprecated and will be removed in a future release.’)

    这个特性在早期版本的MySQL中被广泛使用,但随着数据库设计的发展,这个特性被认为有些误导性,因为它可能让人误以为它影响了实际的数据存储范围。 警告中提到的1681错误代码是MySQL发出的,表示这个功能即将被废弃...

    MySQL英文单词汇总.pdf

    * zerofill:填充 0 的整数类型 * float:单精度浮点类型 * double:双精度浮点类型 * decimal:十进位类型,小数类型 * numeric:数字类型 * fixed:固定类型 * char:定长字符类型 * varchar:变长字符类型 * ...

    mysql数据库cmd命令大全

    本文档总结了 MySQL 数据库 cmd 命令的使用方法和实践经验,涵盖了连接数据库、授权、数据库操作、表操作、字段类型、修改密码、备份数据库、数据库导入和导出、表索引等方面的知识点。 连接数据库 1. 本地连接 ...

    学习笔记Mysql数据类型(字段)介绍.doc

    `ZEROFILL` 属性会在数值不足显示宽度时用零填充。`AUTO_INCREMENT` 用于自增字段,常用于主键。注意,数值类型的显示宽度并不影响存储空间和取值范围,仅影响显示效果。 **字符串类数据类型** 字符串类包括 CHAR...

    mySql经典培训教程

    本教程旨在为中文用户深入浅出地讲解MySQL的使用方法,涵盖基础概念、安装配置、数据表设计、SQL查询、事务处理、备份恢复、性能优化等核心内容,是学习和掌握MySQL的理想参考资料。 #### 二、MySQL列类型详解 ...

    PHP 数字左侧自动补0

    在PHP编程中,有时我们需要对数字进行左侧补零的操作,特别是在处理编号或序列号时,如员工工号、订单号等。例如,我们有一个员工工号`X001`,在MySQL...这些方法都能有效地帮助我们处理各种场景下的数字格式化问题。

    第12章_MySQL数据类型精讲1

    配合`ZEROFILL`使用,会用0填充不足的部分。自MySQL 8.0.17起,不推荐为整数类型指定显示宽度。 3. **浮点类型**: - **FLOAT**: 提供近似浮点数值,占用4字节,精度较低。 - **DOUBLE**: 更精确的浮点数值,占用...

    MySql数据库的列类型(字段类型)

    - **ZEROFILL**:如果数值的宽度小于定义的显示宽度,会在数值前填充0。 - **AUTO_INCREMENT**:仅对整数类型有效,生成唯一的数字序列。 **浮点型数据列的特殊属性**: - **FLOAT和DOUBLE的UNSIGNED属性**:MySQL ...

    MySQL字段类型说明[文].pdf

    可选的ZEROFILL属性会在数值不足时自动填充0。 2. SMALLINT:存储小整数,有符号范围为-32768至32767,无符号范围为0至65535。 3. MEDIUMINT:中等大小的整数,有符号范围为-8388608至8388607,无符号范围为0至...

    mysql int和tinyint的区别.docx

    ### MySQL INT 和 TINYINT 的区别 #### 一、INT 和 TINYINT 概述 在MySQL中,`INT` 和 `TINYINT` 是两种常见的整数类型,它们...在具体使用过程中,还需要根据实际应用情况合理设置`ZEROFILL`等选项以满足特定需求。

Global site tag (gtag.js) - Google Analytics