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

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


การประกาศคอลัมน์ 'NOT NULL' หมายความว่าคอลัมน์นี้จะไม่ยอมรับค่า NULL แต่เป็นศูนย์ (0) และสตริงว่างคือค่าในตัวเอง ดังนั้น จะไม่มีปัญหาหากเราต้องการแทรกศูนย์หรือสตริงว่างลงในคอลัมน์ MySQL ซึ่งกำหนดเป็น NOT NULL การเปรียบเทียบ 0 และสตริงว่างที่มี NULL จะทำให้ชัดเจน -

mysql> Select 0 IS NULL, 0 IS NOT NULL;
+-----------+---------------+
| 0 IS NULL | 0 IS NOT NULL |
+-----------+---------------+
|         0 |             1 |
+-----------+---------------+
1 row in set (0.00 sec)

ชุดผลลัพธ์ข้างต้นแสดงว่าศูนย์ (0) ไม่ใช่ NULL มันหมายความว่าศูนย์ (0) เป็นค่าตัวมันเองเพราะอย่างที่เรารู้ว่า NULL หมายถึงไม่มีค่า

mysql> Select '' IS NULL, '' IS NOT NULL;
+------------+----------------+
| '' IS NULL | '' IS NOT NULL |
+------------+----------------+
|          0 |              1 |
+------------+----------------+
1 row in set (0.00 sec)

ชุดผลลัพธ์ข้างต้นแสดงว่าสตริงว่าง ('') ไม่ใช่ NULL หมายถึงสตริงว่าง ('') เป็นค่าเองเพราะอย่างที่เราทราบ NULL หมายถึงไม่มีค่า

ตัวอย่าง

mysql> create table test(id int NOT NULL, Name Varchar(10));
Query OK, 0 rows affected (0.19 sec)

mysql> Insert into test6(id, name) values('1', 'Gaurav'),('0','Rahul'),('','Aarav');
Query OK, 3 rows affected, 1 warning (0.08 sec)
Records: 3 Duplicates: 0 Warnings: 1

Warning (Code 1366): Incorrect integer value: '' for column 'id' at row 3

mysql> Select * from test;
+----+--------+
| id | Name |
+----+--------+
|  1 | Gaurav |
|  0 | Rahul  |
|  0 | Aarav  |
+----+--------+
3 rows in set (0.00 sec)

จากชุดผลลัพธ์ข้างต้น จะสังเกตได้ว่าเราสามารถแทรกศูนย์ (0) สตริงว่าง ('') ลงในคอลัมน์ที่ประกาศเป็น NOT NULL