Hướng dẫn how to handle null values in mysql - cách xử lý giá trị null trong mysql


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
   
   
      connect_errno ) {
            printf("Connect failed: %s
", $mysqli->connect_error); exit(); } printf('Connected successfully.
'); if( isset($tutorial_count )) { $sql = 'SELECT tutorial_author, tutorial_count FROM tcount_tbl WHERE tutorial_count = ' + $tutorial_count; } else { $sql = 'SELECT tutorial_author, tutorial_count FROM tcount_tbl WHERE tutorial_count IS NULL'; } $result = $mysqli->query($sql); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { printf("Author: %s, Count: %d
", $row["tutorial_author"], $row["tutorial_count"]); } } else { printf('No record found.
'); } $mysqli->close(); ?>

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.

Làm thế nào để bạn xử lý các giá trị null trong SQL?

Làm thế nào để kiểm tra các giá trị null ?..
Chọn Cột_Names. Từ TABLE_NAME. Trong đó cột_name là null ;.
Chọn Cột_Names. Từ TABLE_NAME. Trong đó cột_name không phải là null ;.
Thí dụ. Chọn CustomerName, ContactName, địa chỉ. Từ khách hàng. Nơi địa chỉ là null; ....
Thí dụ. Chọn CustomerName, ContactName, địa chỉ. Từ khách hàng..

Làm thế nào để bạn xử lý các giá trị null?

10 lời khuyên để xử lý null hiệu quả..
Đừng quá nhiều thứ. ....
Sử dụng các phương thức đối tượng làm định vị luồng. ....
Không bao giờ vượt qua Null như một cuộc tranh luận. ....
Xác thực đối số API công khai. ....
Trả lại các bộ sưu tập trống thay vì null. ....
Tùy chọn không phải cho các trường. ....
Sử dụng ngoại lệ trên nulls. ....
Kiểm tra mã của bạn ..

MySQL có hỗ trợ null không?

Mỗi nhà cung cấp cơ sở dữ liệu chính trên thị trường cho phép bạn chèn null theo mặc định bao gồm Microsoft SQL Server và MySQL. including Microsoft SQL Server and MySQL.

Các giá trị null được xử lý như thế nào khi dữ liệu được sắp xếp?

Nếu bạn sắp xếp một cột có giá trị null theo thứ tự tăng dần, các null sẽ đến trước.Ngoài ra, nếu bạn thêm một từ khóa DSC để có được thứ tự giảm dần, NULLS sẽ xuất hiện cuối cùng.. Alternatively, if you add a DESC keyword to get a descending order, NULLs will appear last.