- Chuyên mục khác :
- Git cơ bản và nâng cao
- ·
- MySQL cơ bản và nâng cao
- ·
- MongoDB cơ bản và nâng cao
- ·
- SQL cơ bản và nâng cao
- ·
- Linux cơ bản và nâng cao
- Học MySQL cơ bản và nâng cao
- Học MySQL cơ bản và nâng cao
- MySQL là gì
- Cài đặt MySQL
- Quản lý MySQL
- Cú pháp kết hợp MySQL và PHP
- Kết nối MySQL
- Tạo Database trong MySQL
- Xóa cơ sở dữ liệu trong MySQL
- Chọn cơ sở dữ liệu trong MySQL
- Kiểu dữ liệu trong MySQL
- Tạo bảng trong MySQL
- Xóa bảng trong MySQL
- Truy vấn INSERT trong MySQL
- Truy vấn SELECT trong MySQL
- Mệnh đề WHERE trong MySQL
- Truy vấn UPDATE trong MySQL
- Truy vấn DELETE trong MySQL
- Mệnh đề LIKE trong MySQL
- Mệnh đề ORDER BY trong MySQL
- Sử dụng JOIN trong MySQL
- Xử lý giá trị NULL trong MySQL
- Regexp trong MySQL
- Transaction trong MySQL
- Lệnh ALTER trong MySQL
- Chỉ mục (INDEX) trong MySQL
- Bảng tạm trong MySQL
- Mô phỏng bảng trong MySQL
- Lấy và sử dụng MySQL Metadata
- Sử dụng Sequence trong MySQL
- Xử lý bản sao trong MySQL
- Injection trong MySQL và SQL
- Export và Phương thức Backup trong MySQL
- Import và phương thức Recovery trong MySQL
- Mệnh đề GROUP BY trong MySQL
- Mệnh đề IN trong MySQL
- Mệnh đề BETWEEN trong MySQL
- Từ khóa UNION trong MySQL
- Hàm hữu ích trong MySQL
Bạn đã thấy cách lệnh SELECT cùng với mệnh đề WHERE trong SQL lấy dữ liệu từ bảng MySQL, nhưng khi chúng ta cố gắng cung cấp một điều kiện so sánh giá trị trường hoặc giá trị cột với NULL, nó làm việc không chính xác.
Để xử lý những tình huống như vậy, MySQL cung cấp 3 toán tử:
IS NULL: Toán tử này trả về true nếu giá trị cột là NULL.
IS NOT NULL: Toán tử này trả về true nếu giá trị côt không là NULL.
<=>: Toán tử này so sánh các giá trị, mà (không giống toán tử =) là true khi hai giá trị là NULL.
Các điều kiện liên quan tới NULL là khá đặc biệt. Bạn không thể sử dụng = NULL hoặc != NULL để tìm giá trị NULL trong các cột. Những so sánh như thế luôn luôn thất bại bởi vì nó là không thể để nói rằng có hay không chúng là true. Ngay cả NULL = NULl cũng thất bại.
Để tìm các cột là hoặc không là NULL, sử dụng toán tử IS NULL hoặc IS NOT NULL trong MySQL.
Sử dụng giá trị NULL trong MySQL
Giả sử tạo một bảng hocphik59 trong cơ sở dữ liệu sinhvien. Bảng này gồm hai cột là ten và hocphi (bạn chú ý rằng trong khi tạo bảng ở trường học phí ta đã không ràng buộc điều kiện NOT NULL và khi chèn dữ liệu mình đã để trống hai trường).
//Chon co so du lieu USE sinhvien; //Tao bang hocphik59 CREATE TABLE hocphik59 ( ten VARCHAR(255) NOT NULL, hocphi INT ); //Chen du lieu vao bang hocphik59 INSERT INTO hocphik59 (ten, hocphi) VALUES ('Nam', 4000000); INSERT INTO hocphik59 (ten, hocphi) VALUES ('Thanh', NULL); INSERT INTO hocphik59 (ten, hocphi) VALUES ('Cao', NULL); INSERT INTO hocphik59 (ten, hocphi) VALUES ('Huong', 3000000);
Sau đó, sử dụng lệnh SELECT * FROM hocphik59; sẽ cho kết quả:
SELECT * FROM hocphik59; //ket qua la: +--------+-------------+ | ten | hocphi | +--------+-------------+ | Nam | 4000000 | | Thanh | NULL | | Cao | NULL | | Huong | 3000000 | +--------+-------------+
Bây giờ, nếu bạn sử dụng = và != với cột hocphi, bạn sẽ thấy rằng chúng không làm việc với các giá trị NULL, và sẽ không có kết quả được trả về:
SELECT * FROM hocphik59 WHERE hocphi = NULL; 0 row(s) returned mysql> SELECT * FROM hocphik59 WHERE hocphi != NULL; 0 row(s) returned
Để tìm các bản ghi mà cột hocphi là hoặc không là NULL, các truy vấn nên được viết như sau:
SELECT * FROM hocphik59 WHERE hocphi IS NULL; //Ket qua la: +--------+-------------+ | ten | hocphi | +--------+-------------+ | Thanh | NULL | | Cao | NULL | +--------+-------------+ SELECT * FROM hocphik59 WHERE hocphi IS NOT NULL; //Ket qua la: +--------+-------------+ | ten | hocphi | +--------+-------------+ | Nam | 4000000 | | Huong | 3000000 | +--------+-------------+
Xử lý giá trị NULL trong PHP Script
Bạn có thể sử dụng điều kiện if…else để chuẩn bị một truy vấn dựa trên giá trị NULL.
Ví dụ
Ví dụ sau lấy hocphi ra ngoài và sau đó so sánh nó với giá trị có sẵn trong bảng. Ở đây mình sử dụng hàm isset($hocphi) để kiểm tra xem biến hocphi đã có giá trị (khác null) hay chưa, nếu đã được thiết lập thì trả về giá trị True, nếu không là False.
<?php $dbhost = 'localhost:3306'; $dbuser = 'root'; $dbpass = '123456'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Khong the ket noi: ' . mysql_error()); } if( isset($hocphi )) { $sql = 'SELECT ten, hocphi FROM hocphik59 WHERE hocphi = $hocphi'; } else { $sql = 'SELECT ten, hocphi FROM hocphik59 WHERE hocphi IS $hocphi'; } mysql_select_db('sinhvien'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Khong the lay du lieu: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "Ten :{$row['ten']} <br> ". "Hoc Phi : {$row['hocphi']} <br> ". "--------------------------------<br>"; } echo "Lay du lieu thanh cong\n"; mysql_close($conn); ?>
Các bài học MySQL phổ biến khác tại s2sontech:
Bình luận (0)