MySQL は、ENUM 値を整数キー (インデックス番号) として内部的に保存し、ENUM メンバーを参照します。整数値を ENUM カラムに格納しない主な理由は、明らかに MySQL が値ではなくインデックスを参照することになり、その逆も同様であることです。
次の例で明確になります:
mysql> Create table enmtest(Val ENUM('0','1','2')); Query OK, 0 rows affected (0.18 sec) mysql> Insert into enmtest values('1'),(1); Query OK, 2 rows affected (0.19 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> Select * from enmtest; +-----+ | Val | +-----+ | 1 | | 0 | +-----+ 2 rows in set (0.00 sec)
ここでは、文字列として「1」を挿入し、誤って数字の 1 も挿入しました。引用符なし。 MySQL は紛らわしいことに、メンバー リストの最初の項目 (つまり 0) への内部参照であるインデックス値として数値入力を使用します。
以上がなぜ数値を MySQL ENUM カラムに保存すべきではないのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。