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

บทบาทของชนิดข้อมูลเมื่อ INSERT สตริงว่างลงคอลัมน์ NOT NULL ใน MySQL


การแสดงผลของสตริงว่าง (empty string) ในชุดผลลัพธ์ ขึ้นอยู่กับชนิดข้อมูลของคอลัมน์ เมื่อ INSERT สตริงว่างลงคอลัมน์ที่ประกาศ NOT NULL เรากำลังให้ค่าที่มีการแทนค่าเป็นจำนวนเต็ม 0 (INT 0)

หากคอลัมน์เป็นชนิด INTEGER MySQL จะแสดง 0 ในผลลัพธ์ เพราะสตริงว่างถูกแมปเป็นศูนย์ในรูปแบบจำนวนเต็ม

ตัวอย่าง: คอลัมน์ INTEGER

mysql> create table test(id int NOT NULL, Name Varchar(10));
Query OK, 0 rows affected (0.19 sec)
mysql> Insert into test(id, name) values('1', 'Gaurav'),('0','Rahul'),('','Aarav');
Query OK, 3 rows affected, 1 warning (0.08 sec)
Records: 3 Duplicates: 0 Warnings: 1
mysql> Select * from test;
+----+--------+
| id | Name   |
+----+--------+
|  1 | Gaurav |
|  0 | Rahul  |
|  0 | Aarav  |
+----+--------+
3 rows in set (0.00 sec)

แถวที่สาม INSERT สตริงว่างสำหรับ id MySQL แสดงเป็น 0

แต่ถ้าคอลัมน์เป็น VARCHAR MySQL จะแสดงสตริงว่างในผลลัพธ์

ตัวอย่าง: คอลัมน์ VARCHAR

mysql> create table test123(id Varchar(10) NOT NULL, Name Varchar(10));
Query OK, 0 rows affected (0.19 sec)
mysql> Insert into test123(id, name) values('1', 'Gaurav'),('0','Rahul'),('','Aarav');
Query OK, 3 rows affected, 1 warning (0.08 sec)
Records: 3 Duplicates: 0 Warnings: 1
mysql> Select * from test123;
+----+--------+
| id | Name   |
+----+--------+
| 1  | Gaurav |
| 0  | Rahul  |
|    | Aarav  |
+----+--------+
3 rows in set (0.00 sec)

จากตัวอย่างเห็นว่าชนิดข้อมูลกำหนดการแสดงผลของสตริงว่างในคอลัมน์ NOT NULL