`
dcj3sjt126com
  • 浏览: 1835724 次
  • 性别: 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:填充文件系统中未使用的空间。-开源

    用零字节填充文件系统中未使用的空间,并覆盖未使用的inode。 根据van Hauser / [THC],vh @ thc.org对安全删除的填充, ,简化并添加了一些修复程序。 版本:0.5.1

    mysql 字段类型说明

    有符号的范围是-9223372036854775808到9223372036854775807,无符号的范围是0到 18446744073709551615。 浮点类型 * FLOAT[(M,D)] [ZEROFILL]:一个小(单精密)浮点数字。不能无符号。允许的值是-3.402823466E+38...

    MYSQL常用命令大全

    MySql的用户管理是通过 User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下: grant all on mydb...

    MySQL命令大全

    MySql的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下: grant all on mydb...

    mantis db_generate.sql

    id int(7) unsigned zerofill DEFAULT '0000000' NOT NULL auto_increment, reporter_id int(7) unsigned zerofill DEFAULT '0000000' NOT NULL, handler_id int(7) unsigned zerofill DEFAULT '0000000' NOT ...

    比较详细的MySQL字段类型说明

    由MySQL支持的列类型列在下面。下列代码字母用于描述中: M 指出最大的显示尺寸。最大的合法的显示尺寸是 255 。...有符号的范围是-128到127,无符号的范围是0到255。 SMALLINT[(M)] [UNSIGNED] [ZEROFILL] 一个小整数

    mysql int(3)与int(11)的区别详解

    总结,int(M) zerofill,加上zerofill后M才表现出有点点效果,比如 int(3) zerofill,你插入到数据库里的是10,则实际插入为010,也就是在前面补充加了一个0.如果int(3)和int(10)不加zerofill,则它们没有什么区别.M...

    vue-superset:基于vue框架技术的超集合

    想要作为自己公司项目的依赖来开发的,请谨慎使用 集合结构预览: common- 无任何依赖通用模块 util- 常用工具函数集合 uuid- 生成uuid platform- 判断当前平台环境 getTimezoneOffset- 获取时区偏移 ...

    全球城市资源 sql 表 包含国际城市

    `id` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '城市名称', `code` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '状态码', ...

    mysql基础只是总结

    7、前导0 zerofill 属性可以写在末尾的主键 列值唯一 索引 4、查看表 desc 表名 show columns from 表名 show columns in 表名 5、修改表 alter table 表名 a) drop 字段 注意当表中字段为1个的时候不能...

    中国行政区域,邮政编码,5级行政区域mysql库

    `zip_code` mediumint(6) unsigned zerofill NOT NULL DEFAULT '000000' COMMENT '邮政编码', `city_code` char(6) NOT NULL DEFAULT '' COMMENT '区号', `name` varchar(50) NOT NULL DEFAULT '' COMMENT '名称'...

    cds:springboot、mybatis、swagger 干净的项目架构

    CREATE TABLE TEST_USER ( id int(11)NOT NULL AUTO_INCREMENT, name varchar(255)DEFAULT NULL, age int(11)DEFAULT NULL, is_del int(1)unsigned zerofill is_del ',PRIMARY KEY( id ))ENGINE = ...

    springboot的模块化开发,集成shiro+jwt实现restful接口的token认证

    `user_id` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT, `user_name` varchar(32) DEFAULT '', PRIMARY KEY (`user_id`) )ENGINE=InnoDB DEFAULT CHARSET=utf8 ; CREATE TABLE `auth_user` ( `userId` ...

    MySQL表的约束

    表的约束很多,这里主要介绍如下几个: null/not null,default, comment, zerofill,primary key,auto_increment,unique key 。 空属性 两个值:null(默认的)和not null(不为空) 数据库默认字段基本都是字段为空,...

    asp google pr查询代码

    } function zeroFill(a,b) { var z = hexdec(80000000); if (z & a) { a = a&gt;&gt;1; a &= ~z; a |= 0x40000000; a = a&gt;&gt;(b-1); } else { a = a &gt;&gt; b; } return (a); } function mix(a,b,c) { a -= b;

    tb_provinces.sql

    `is_use` int(1) unsigned zerofill DEFAULT NULL, PRIMARY KEY (`id`), KEY `depth` (`depth`), KEY `id` (`id`,`parent_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='区县行政编码字典表';

    3分钟如何向MySQL数据库中插入100万条数据

    一、编写测试案例向MySQL数据库中插入百万条数据。测试数据表建表脚本如下:use db_xk; drop table if exists tb_... teacher_id int(10) zerofill not null, student_id int(10) zerofill default null, state b

    简单谈谈MySQL中的int(m)

    我们在设计表的时候,如果碰到需要设置int...当然,它的作用不仅如此,在存入数据的时候,还是有一定区别的,这一点可以通过设置字段的zerofill可以看出。比如这里我们创建一个数据表,结构如下: create table test

    mysql基础操作及案例分析

    主键的作用(主键约束,自增长约束auto_increnment,非空约束-not null,唯一约束unique,默认约束default,零填充约束zerofill) DQL操作(排序查询,聚合查询,分组查询,分页查询limit,正则表达式)、 多表操作...

    MySQL语句细解——笔记【更新中】

    文章目录开篇重点提示database 库相关table 表相关data 数据相关character 字符列类型整数型Int测试代码语句细解unsigned 无符号标识设定显示长度zerofill 显示长度保持最高位小数型FloatDoubleDecimal测试代码语句...

Global site tag (gtag.js) - Google Analytics