Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีแสดงว่าแต่ละค่า ENUM ใน MySQL มีค่าดัชนี

จริงๆ แล้วสมาชิกที่ระบุในข้อกำหนดคอลัมน์ ENUM จะได้รับหมายเลขดัชนีเริ่มจาก 1 คำว่า "ดัชนี" ในที่นี้หมายถึงตำแหน่งภายในรายการค่า ENUM ไม่เกี่ยวข้องกับดัชนีของตาราง เราสามารถแสดงได้หลายวิธีดังนี้:

1. การแทรกค่าดัชนีแทนค่า ENUM

เราสามารถแทรกค่าในคอลัมน์ ENUM โดยใช้หมายเลขดัชนีแทนการเขียนค่า ตัวอย่างเช่น ในตารางที่มีค่า ENUM เป็น 'Pass' และ 'Fail' โดย 'Pass' อยู่ลำดับแรกจึงมีดัชนี 1 และ 'Fail' มีดัชนี 2 เราสามารถแทรกได้ดังนี้:

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)

ในคิวรีข้างต้น เราใช้หมายเลขดัชนี 1 และ 2 สำหรับค่า ENUM 'Pass' และ 'Fail' ตามลำดับ

2. การแทรกสตริงว่างแทนค่า ENUM

ค่าดัชนีของสตริงว่างคือ 0 ก่อนแทรกสตริงว่าง โหมด SQL ต้องไม่เป็น TRADITIONAL, STRICT_TRANS_TABLES หรือ STRICT_ALL_TABLES

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)

คิวรีข้างต้นจะแทรกสตริงว่างพร้อมคำเตือน:

mysql> SHOW WARNINGS;
+---------+------+---------------------------------------------+
| Level   | Code | Message                                     |
+---------+------+---------------------------------------------+
| Warning | 1265 | Data truncated for column 'Result' at row 1 |
+---------+------+---------------------------------------------+
1 row in set (0.00 sec)

ตรวจสอบตาราง จะเห็นสตริงว่างในฟิลด์ 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)

จากผลลัพธ์ข้างต้น ชัดเจนว่าค่าดัชนีของสตริงว่างคือ 0

3. การแทรก NULL แทนค่า ENUM

เราสามารถแทรก NULL ได้หากไม่ระบุ NOT NULL กับคอลัมน์ ENUM ค่าดัชนีของ NULL คือ NULL

mysql> CREATE TABLE result(Id INT PRIMARY KEY NOT NULL, Name VARCHAR(10), Grade ENUM('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)

ตรวจสอบว่าค่าดัชนีของ NULL คือ NULL:

mysql> SELECT Grade+0 AS Grade_index FROM result;
+-------------+
| Grade_index |
+-------------+
| NULL        |
+-------------+
1 row in set (0.00 sec)