Chúng tôi đã thấy lệnh sql chọn cùng với mệnh đề nơi để tìm nạp dữ liệu từ bảng MySQL, nhưng khi chúng tôi cố gắng đưa ra một điều kiện, so sánh trường hoặc giá trị cột với NULL, nó không hoạt động đúng.SELECT command along with the WHERE clause to fetch data from a MySQL table, but when we try to give a condition, which compares the field or the column value to NULL, it does not work properly.
Để xử lý tình huống như vậy, MySQL cung cấp ba toán tử -
Là null - toán tử này trả về đúng, nếu giá trị cột là null. − This operator returns true, if the column value is NULL.
Không phải là null - toán tử này trả về đúng, nếu giá trị cột không phải là null. − This operator returns true, if the column value is not NULL.
- toán tử này so sánh các giá trị, không giống như toán tử = toán tử] là đúng ngay cả đối với hai giá trị null. − This operator compares values, which [unlike the = operator] is true even for two NULL values.
Các điều kiện liên quan đến NULL là đặc biệt. Bạn không thể sử dụng = null hoặc! = Null để tìm các giá trị null trong các cột. Những so sánh như vậy luôn thất bại bởi vì không thể biết chúng có đúng hay không. Đôi khi, ngay cả null = null thất bại.NULL or != NULL to look for NULL values in columns. Such comparisons always fail because it is impossible to tell whether they are true or not. Sometimes, even NULL = NULL fails.
Để tìm kiếm các cột hoặc không phải là null, sử dụng là null hoặc không phải là null.IS NULL or IS NOT NULL.
Sử dụng các giá trị null tại dấu nhắc lệnh
Giả sử rằng có một bảng gọi là Tcount_TBL trong cơ sở dữ liệu hướng dẫn và nó chứa hai cột là hướng dẫn_Author và Tutorial_count, trong đó không xác định giá trị.tcount_tbl in the TUTORIALS database and it contains two columns namely tutorial_author and tutorial_count, where a NULL tutorial_count indicates that the value is unknown.
Thí dụ
Hãy thử các ví dụ sau -
root@host# mysql -u root -p password; Enter password:******* mysql> use TUTORIALS; Database changed mysql> create table tcount_tbl -> [ -> tutorial_author varchar[40] NOT NULL, -> tutorial_count INT -> ]; Query OK, 0 rows affected [0.05 sec] mysql> INSERT INTO tcount_tbl -> [tutorial_author, tutorial_count] values ['mahran', 20]; mysql> INSERT INTO tcount_tbl -> [tutorial_author, tutorial_count] values ['mahnaz', NULL]; mysql> INSERT INTO tcount_tbl -> [tutorial_author, tutorial_count] values ['Jen', NULL]; mysql> INSERT INTO tcount_tbl -> [tutorial_author, tutorial_count] values ['Gill', 20]; mysql> SELECT * from tcount_tbl; +-----------------+----------------+ | tutorial_author | tutorial_count | +-----------------+----------------+ | mahran | 20 | | mahnaz | NULL | | Jen | NULL | | Gill | 20 | +-----------------+----------------+ 4 rows in set [0.00 sec] mysql>
Bạn có thể thấy rằng = và! = Không hoạt động với các giá trị null như sau -!= do not work with NULL values as follows −
mysql> SELECT * FROM tcount_tbl WHERE tutorial_count = NULL; Empty set [0.00 sec] mysql> SELECT * FROM tcount_tbl WHERE tutorial_count != NULL; Empty set [0.01 sec]
Để tìm các bản ghi nơi cột Tutorial_count là hoặc không phải là NULL, các truy vấn nên được viết như trong chương trình sau.
mysql> SELECT * FROM tcount_tbl -> WHERE tutorial_count IS NULL; +-----------------+----------------+ | tutorial_author | tutorial_count | +-----------------+----------------+ | mahnaz | NULL | | Jen | NULL | +-----------------+----------------+ 2 rows in set [0.00 sec] mysql> SELECT * from tcount_tbl -> WHERE tutorial_count IS NOT NULL; +-----------------+----------------+ | tutorial_author | tutorial_count | +-----------------+----------------+ | mahran | 20 | | Gill | 20 | +-----------------+----------------+ 2 rows in set [0.00 sec]
Xử lý các giá trị null trong tập lệnh PHP
Bạn có thể sử dụng điều kiện IF ... khác để chuẩn bị truy vấn dựa trên giá trị null.if...else condition to prepare a query based on the NULL value.
Ví dụ sau đây lấy hướng dẫn_count từ bên ngoài và sau đó so sánh nó với giá trị có sẵn trong bảng.
Thí dụ
Hãy thử các ví dụ sau -
Handling NULL
Bạn có thể thấy rằng = và! = Không hoạt động với các giá trị null như sau -
Để tìm các bản ghi nơi cột Tutorial_count là hoặc không phải là NULL, các truy vấn nên được viết như trong chương trình sau.
Connected successfully. No record found.