Thư mục bài viết
MySQL xử lý các truy vấn có giá trị không rỗng như thế nào? ( Câu lệnh SELECT IS NOT NULL trong MySQL)
Xử lý rỗng trong MySQL
Chúng ta đã biết rằng MySQL sử dụng lệnh SQL SELECT và mệnh đề WHERE để đọc dữ liệu trong bảng dữ liệu, nhưng khi trường điều kiện truy vấn được cung cấp là NULL, lệnh có thể không hoạt động bình thường.
Để xử lý tình huống này, MySQL cung cấp ba toán tử chính:
- LÀ KHÔNG ĐỦ:Toán tử này trả về true khi giá trị cột là NULL.
- KHÔNG ĐẦY ĐỦ:Toán tử trả về true khi giá trị cột không phải là NULL.
- <=>: Toán tử so sánh (không giống như toán tử =) trả về true khi hai giá trị được so sánh là NULL.
Các phép toán so sánh có điều kiện trê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ột.
Trong MySQL, so sánh giá trị NULL với bất kỳ giá trị nào khác (thậm chí NULL) luôn trả về false, tức là NULL = NULL trả về false.
NULL được xử lý trong MySQL bằng cách sử dụng các toán tử IS NULL và IS NOT NULL.
Sử dụng giá trị NULL trong dấu nhắc lệnh
Trong ví dụ sau, bảng chenweiliang_test_tbl trong cơ sở dữ liệu chenweiliang được đặt để chứa hai cột, chenweiliang_author và chenweiliang_count, và các giá trị NULL được đặt để chèn vào chenweiliang_count.
Phiên bản
Hãy thử các ví dụ sau:
Tạo bảng dữ liệu chenweiliang_test_tbl
root @ host #mysql -u root -p password; 输入密码:******* mysql > 使用chenweiliang ; 数据库改变了mysql > create table chenweiliang_test_tbl - > ( - > chenweiliang_author varchar (40 )NOT NULL , - > chenweiliang_count INT - > ); 查询OK ,0 行受影响(0.05 秒)mysql > INSERT INTO chenweiliang_test_tbl (chenweiliang_author ,chenweiliang_count )values (' chenweiliang ' ,20 ); mysql > INSERT INTO chenweiliang_test_tbl (chenweiliang_author ,chenweiliang_count )values (' 陈沩亮博客' ,NULL ); mysql > INSERT INTO chenweiliang_test_tbl (chenweiliang_author ,chenweiliang_count )values ( ' Google ' ,NULL ); mysql > INSERT INTO chenweiliang_test_tbl (chenweiliang_author ,chenweiliang_count )values (' FK ' ,20 ); mysql > SELECT * from chenweiliang_test_tbl ; + --------------- + -------------- + | chenweiliang_author | chenweiliang_count | + --------------- + -------------- + | chenweiliang | 20 | | 陈沩亮博客| NULL | | Google | NULL | | FK | 20 | + --------------- + -------------- + 4 行中集合(0.01 秒)
Trong ví dụ sau, bạn có thể thấy = và! Toán tử = không hoạt động:
mysql > SELECT * FROM chenweiliang_test_tbl WHERE chenweiliang_count = NULL ; 空集(0.00 秒)mysql > SELECT * FROM chenweiliang_test_tbl WHERE chenweiliang_count != NULL ; 空集(0.01 秒)
Để kiểm tra xem cột chenweiliang_test_tbl trong bảng dữ liệu có giá trị NULL hay không, bạn phải sử dụng IS NULL và IS NOT NULL , như trong ví dụ sau:
mysql > SELECT * FROM chenweiliang_test_tbl WHERE chenweiliang_count IS NULL ; + --------------- + -------------- + | chenweiliang_author | chenweiliang_count | + --------------- + -------------- + | 陈沩亮博客| NULL | | Google | NULL | + --------------- + -------------- + 2 行中的组(0.01 秒)的MySQL > SELECT * 从chenweiliang_test_tbl WHERE chenweiliang_count IS NOT 空值 ; + --------------- + -------------- + | chenweiliang_author | chenweiliang_count | + --------------- + -------------- + | chenweiliang | 20 | | FK | 20 | + --------------- + -------------- + 2 行中的组(0.01 秒)
Xử lý các giá trị NULL bằng tập lệnh PHP
Trong tập lệnh PHP, bạn có thể sử dụng câu lệnh if...else để xử lý xem biến có trống không và tạo câu lệnh điều kiện tương ứng.
Trong ví dụ sau PHP đặt biến $ chenweiliang_count và sau đó sử dụng biến đó để so sánh với trường chenweiliang_count trong bảng dữ liệu:
MySQL ORDER BY thử nghiệm:
<?
php $ dbhost = ' localhost:3306 ' ; // mysql服务器主机地址
$ dbuser = ' root ' ; // mysql用户名
$ dbpass = ' 123456 ' ; // mysql用户名密码
$ conn = mysqli_connect ($ dbhost ,$ dbuser ,$ dbpass );
如果(!$ conn ){ die (' 连接失败:' 。mysqli_error ($ conn ));
} // 设置编码,防止中文乱码
mysqli_query ($ conn ,“ set names utf8 ” );
if (isset ($ chenweiliang_count )){ $ sql = “ SELECT chenweiliang_author,chenweiliang_count FROM chenweiliang_test_tbl WHER chenweiliang_count = $ chenweiliang_count ” ;
} else { $ sql = “ SELECT chenweiliang_author,chenweiliang_count FROM chenweiliang_test_tbl WHER chenweiliang_count IS NULL ” ;
} mysqli_select_db ($ conn ,'
chenweiliang ' );
$ retval = mysqli_query ($ conn ,$ sql );
if (!$ retval ){ die (' 无法读取数据:' 。mysqli_error ($ conn ));
} echo ' <h2>陈沩亮博客IS NULL测试<h2> ' ;
echo ' <table border =“1”> <tr> <td>作者</ td> <td>登陆次数</ td> </ tr> ' ;
$ retval ,MYSQL_ASSOC )){ echo “ <tr> ” 。
“ <td> {$ row ['chenweiliang_author']} </ td> ” 。
“ <td> {$ row ['chenweiliang_count']} </ td> ” 。
“ </ tr> ” ;
} echo ' </ table> ' ;
mysqli_close ($ conn );
?>
Hy vọng bài viết "Cách xử lý các truy vấn giá trị không rỗng trong cơ sở dữ liệu MySQL? Câu lệnh IS NOT NULL SELECT trong MySQL" được chia sẻ trên blog của Chen Weiliang ( https://www.chenweiliang.com/ ) sẽ hữu ích cho bạn.
Bạn có thể thoải mái chia sẻ liên kết bài viết này: https://www.chenweiliang.com/cwl-491.html
