Maison >base de données >tutoriel mysql >Comment montrer que chaque énumération MySQL a une valeur d'index ?
En fait, les éléments répertoriés dans la spécification de la colonne ENUM se voient attribuer un numéro d'index commençant à 1. Le terme « index » fait ici référence à la position dans la liste des valeurs d’énumération, elles n’ont rien à voir avec l’index de la table. Avec l'exemple suivant, nous pouvons montrer que chaque énumération MySQL a une valeur d'index -
Nous pouvons insérer dans la colonne ENUM en insérant leur numéro d'index au lieu d'écrire la valeur. Par exemple, dans le tableau ci-dessous, nous avons deux valeurs ENUM « réussite » et « échec ». Puisque « réussite » est écrit en premier dans la liste d'énumération, il obtient le numéro d'index « 1 » et le numéro d'index de « échec » est « 2 ». Maintenant, nous pouvons également insérer la valeur en insérant le numéro d'index comme indiqué ci-dessous -
mysql> Insert into marks(id,name,result)values(103,'Daksh','1'); Query OK, 1 row affected (0.06 sec) mysql> Insert into marks(id,name,result)values(104,'Shayra','2'); Query OK, 1 row affected (0.07 sec) mysql> Select * from marks; +-----+---------+--------+ | id | Name | Result | +-----+---------+--------+ | 101 | Aarav | Pass | | 102 | Yashraj | Fail | | 103 | Daksh | Pass | | 104 | Shayra | Fail | +-----+---------+--------+ 4 rows in set (0.00 sec)
Dans la requête ci-dessus, nous avons utilisé les numéros d'index 1 et 2 pour représenter respectivement les valeurs d'énumération réussies et échouées.
La valeur d'index d'une chaîne vide est 0. Le mode SQL ne peut pas être TRADITIONAL, STRICT_TRANS_TABLES ou STRICT_ALL_TABLES avant d'insérer la chaîne vide. Nous pouvons le comprendre avec l'exemple suivant −
mysql> SET SESSION sql_mode = ''; Query OK, 0 rows affected (0.00 sec) mysql> Insert into marks(id, name, result) values(105,'Yashraj',''); Query OK, 1 row affected, 1 warning (0.06 sec)
La requête ci-dessus insérera une chaîne vide à la position de la valeur enum. MySQL insère une chaîne vide avec l'avertissement suivant.
mysql> Show warnings; +---------+------+---------------------------------------------+ | Level | Code | Message | +---------+------+---------------------------------------------+ | Warning | 1265 | Data truncated for column 'Result' at row 1 | +---------+------+---------------------------------------------+ 1 row in set (0.00 sec)
Maintenant, lorsque nous inspectons la table, nous pouvons voir qu'il y a une chaîne vide dans le champ ENUM.
mysql> Select * from marks; +-----+---------+--------+ | id | Name | Result | +-----+---------+--------+ | 101 | Aarav | Pass | | 102 | Yashraj | Fail | | 103 | Daksh | Pass | | 104 | Shayra | Fail | | 105 | Yash | | +-----+---------+--------+ 5 rows in set (0.00 sec) mysql> Select result+0 As result_index from marks; +--------------+ | result_index | +--------------+ | 1 | | 2 | | 1 | | 2 | | 0 | +--------------+ 5 rows in set (0.01 sec) From the output of above query, it is clear that the index value of the empty string is 0.
Nous pouvons insérer NULL à la place de la valeur d'énumération car nous ne spécifions pas NOT NULL pour la colonne ENUM. La valeur d'index de NULL est NULL. Par exemple, à l'aide de la requête suivante, nous insérons NULL dans la colonne enum de la table "result" et pouvons vérifier sa valeur d'index.
mysql> Create table result(Id INT PRIMARY KEY NOT NULL, Name Varchar(10), GradeENUM('POOR','GOOD')); Query OK, 0 rows affected (0.25 sec) mysql> Insert into result(id, name, grade) values(100, 'Rahul', NULL); Query OK, 1 row affected (0.06 sec)
La requête ci-dessus insère une valeur NULL à la position de la valeur enum, qui peut être vérifiée à l'aide de la requête d'aide ci-dessous -
mysql> Select * from result; +-----+-------+-------+ | Id | Name | Grade | +-----+-------+-------+ | 100 | Rahul | NULL | +-----+-------+-------+ 1 row in set (0.00 sec)
Maintenant, avec l'aide de la requête suivante, nous pouvons observer que la valeur d'index de NULL est NUL.
mysql> Select Grade+0 As Grade_index from result; +-------------+ | Grade_index | +-------------+ | NULL | +-------------+ 1 row in set (0.00 sec)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!