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

ประเภทข้อมูลบทบาทใดที่เล่นเมื่อฉันแทรกสตริงว่างลงในคอลัมน์ MySQL ซึ่งถูกประกาศว่าไม่ใช่ NULL


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

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

ตัวอย่าง

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)

แต่ถ้าคอลัมน์นั้นมีข้อมูลประเภทอื่นว่า VARCHAR แล้ว MySQL จะแสดงสตริงว่างในชุดผลลัพธ์

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)

จากตัวอย่างข้างต้น เราจะเห็นได้ว่าประเภทข้อมูลมีบทบาทอย่างไรเมื่อเราแทรกสตริงว่างลงในคอลัมน์ MySQL ซึ่งถูกประกาศว่าไม่ใช่ NULL