细节问题:ZEROFILL的用法范围。
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)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;
本文出自 “上帝,咱们不见不散!” 博客,转载请与作者联系!