807260 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

まんじうこわい@楽

まんじうこわい@楽

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

PR

Keyword Search

▼キーワード検索

Calendar

Profile

hknopage

hknopage

Free Space

Category

Freepage List

2009.03.30
XML
カテゴリ:データベース
 何かシリーズ化してしまっているMySQLの型で気になったシリーズです。

 前回ZEROFILLオプションというのがあるとチラッと書いて、気になったのでまた試してみました。

--ZEROFILLオプションを指定するとどうなるのか--
mysql> create table `test_tbl4` (`ti` tinyint ZEROFILL,`ti1` tinyint(1) ZEROFILL,`ti2` tin
yint(2) ZEROFILL,`ti3` tinyint(3) ZEROFILL,`ti4` tinyint(4) ZEROFILL,`ti5` tinyint(5) ZERO
FILL);
Query OK, 0 rows affected (0.01 sec)

mysql> desc test_tbl4;
+-------+------------------------------+------+-----+---------+-------+
| Field | Type                         | Null | Key | Default | Extra |
+-------+------------------------------+------+-----+---------+-------+
| ti    | tinyint(3) unsigned zerofill | YES  |     | NULL    |       |
| ti1   | tinyint(1) unsigned zerofill | YES  |     | NULL    |       |
| ti2   | tinyint(2) unsigned zerofill | YES  |     | NULL    |       |
| ti3   | tinyint(3) unsigned zerofill | YES  |     | NULL    |       |
| ti4   | tinyint(4) unsigned zerofill | YES  |     | NULL    |       |
| ti5   | tinyint(5) unsigned zerofill | YES  |     | NULL    |       |
+-------+------------------------------+------+-----+---------+-------+
6 rows in set (0.01 sec)

 前回を見ている方はアレ?と思ったかもしれません。というか実際私も ぇ? となりました。
 まず全体的にzerofillしかつけていないはずなのにunsignedが自動で付いています。
 これについてはマニュアルに記載がありました。あれほどマニュアルは読めと(
 でも何故付くんだろう・・・-0001とか表現がありえないから??謎です・・・

 unsignedオプションが自動で付くことにより、表示桁数指定なしの場合のデフォルトが4から3に変わっています。(前回参照)
 この事からおさかなさんの"「マイナス記号を含めた最大の桁数」が付くんでしょうね。"という考えが結構裏付けされたんではないでしょうか?

--値を入れてみる--
mysql> insert into test_tbl4 values(1,1,1,1,1,1);
Query OK, 1 row affected (0.00 sec)

mysql> insert into test_tbl4 values(11,11,11,11,11,11);
Query OK, 1 row affected (0.00 sec)

mysql> insert into test_tbl4 values(111,111,111,111,111,111);
Query OK, 1 row affected (0.00 sec)

mysql> insert into test_tbl4 values(1111,1111,1111,1111,1111,1111);
Query OK, 1 row affected, 6 warnings (0.00 sec)

mysql> select * from test_tbl4;
+------+------+------+------+------+-------+
| ti   | ti1  | ti2  | ti3  | ti4  | ti5   |
+------+------+------+------+------+-------+
|  001 |    1 |   01 |  001 | 0001 | 00001 |
|  011 |   11 |   11 |  011 | 0011 | 00011 |
|  111 |  111 |  111 |  111 | 0111 | 00111 |
|  255 |  255 |  255 |  255 | 0255 | 00255 |
+------+------+------+------+------+-------+
4 rows in set (0.00 sec)

 はい、見事に先頭が0で埋まった形となっています。
 最後のクエリは予想通り符号なしの最大値255に丸められてます。

 こうやって使うんですね~勉強になりました。





お気に入りの記事を「いいね!」で応援しよう

Last updated  2009.03.30 23:38:03
コメント(2) | コメントを書く
[データベース] カテゴリの最新記事



© Rakuten Group, Inc.
X