MySQL での Zerofill の使用、利点、および代替

Mehvish Ashiq 2023年6月20日
MySQL での Zerofill の使用、利点、および代替

今日は、MySQL の ZEROFILL 属性の使用、利点、および代替について説明します。

MySQL での ZEROFILL 属性の使用と利点

ZEROFILL 属性を使用する利点は、入力およびデータ ストレージとは関係なく、出力値の表示方法にのみ影響することです。 ZEROFILL while カラム定義を使用すると、MySQL は自動的に UNSIGNED を追加します。

ZEROFILL 属性を使用して列 (属性) を定義してテーブルを作成すると、列定義で指定された表示幅まで、列の出力 (結果値) の左側がゼロで埋められます。

コード例:

CREATE TABLE table_one (
    column_one INT(8) ZEROFILL NOT NULL,
    column_two INT(8) NOT NULL
);

INSERT INTO table_one (column_one, column_two) VALUES
(9, 9),
(98, 98),
(987, 987),
(987654321, 987654321);

SELECT column_one, column_two FROM table_one;

出力:

+------------+------------+
| column_one | column_two |
+------------+------------+
|   00000009 |          9 |
|   00000098 |         98 |
|   00000987 |        987 |
|  987654321 |  987654321 |
+------------+------------+
4 rows in set (0.00 sec)

column_one 属性の幅が 8 である上記の例を参照してください。指定された表示幅よりも長い値は切り捨てられません。

上記のテーブル出力の最後のレコード 987654321 を参照してください。

ZEROFILL属性を持つ整数フィールドに、表示幅よりも大きな値を格納するとします。 MySQL が複雑な結合のために一時テーブルを生成するときに、問題が発生する場合があります。

MySQL サーバーは、データ値がフィールド (列) の表示幅に収まると想定します。 UNIONクエリまたは式に含まれる列は、ZEROFILL属性を無視します。

MySQL 8.0.17 に関しては、ZEROFILL 属性は数値データ型に対して非推奨です。 したがって、整数データ型の表示幅は MySQL の将来のバージョンで削除されるため、ZEROFILL 属性のサポートに期待する必要があります。

MySQL における ZEROFILL 属性の代替機能

したがって、これらの属性に対して同じ効果を生み出す代替手段を使用できます。 たとえば、LPAD() を使用して、表示幅まで左側にゼロを追加したり、CHAR フィールドにフォーマットされた数値を格納したりできます。

次のコード スニペットを参照してください。

SELECT LPAD(column_one,8,0) FROM table_one;

出力:

+----------------------+
| LPAD(column_one,8,0) |
+----------------------+
| 00000009             |
| 00000098             |
| 00000987             |
| 98765432             |
+----------------------+
4 rows in set (0.001 sec)

LPAD() を使用して、INT 型の列の左側にゼロを埋め込むだけでなく、次のように VARCHAR() 型の値にも使用できます。

SELECT LPAD('Hello',8,'??') FROM table_one;

出力:

+----------------------+
| LPAD('Hello',8,'??') |
+----------------------+
| ???Hello             |
| ???Hello             |
| ???Hello             |
| ???Hello             |
+----------------------+
4 rows in set (0.00 sec)
著者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook