MySQL ENUM列に数値を格納しないのはなぜですか?
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を設定します
テーブルの作成中に、ENUM値が必要な列のENUMタイプを設定します。まずテーブルを作成しましょう- mysql> create table DemoTable2019 -> ( -> StudentMarks int, -> StudentStatus ENUM('First','Second','Fail') -> ); Query OK, 0 rows affected (1.75 sec) 挿入コマンド-
-
列の値をMySQLストアドプロシージャの変数に格納します
変数を宣言するには、MySQLストアドプロシージャでDECLAREを使用します。まずテーブルを作成しましょう- mysql> create table DemoTable2034 -> ( -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> StudentName varchar(20), -> StudentAge int -> ); Query OK, 0 rows