11
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi có một bàn "bla" như thế này:
[id] [name] [fk]
1 test 4
2 foo 5
3 bar NULL
Nếu tôi thực hiện truy vấn SQL
SELECT * FROM bla WHERE fk 4
Tôi chỉ nhận được bản ghi với ID 2. Tôi không nhận được bản ghi với ID 3 trong đó fk là null. Tôi nghĩ null! = 4. Có vẻ như điều này là sai.
Tại sao cái này rất?
hỏi ngày 26 tháng 7 năm 2011 lúc 8:02Jul 26, 2011 at 8:02
0
NULL
không so sánh bằng bất cứ điều gì. Bạn sẽ cần phải chấp nhận nulls một cách rõ ràng:
where fk 4 or fk is null;
Xem làm việc với NULL để biết thêm thông tin về xử lý NULL
.
Đã trả lời ngày 26 tháng 7 năm 2011 lúc 8:04Jul 26, 2011 at 8:04
MatmatMat
198K40 Huy hiệu vàng385 Huy hiệu bạc400 Huy hiệu Đồng40 gold badges385 silver badges400 bronze badges
Bởi vì NULL
là viết tắt của
SELECT * FROM bla WHERE fk 4
2 và khi bạn so sánh giá trị với SELECT * FROM bla WHERE fk 4
2, kết quả sẽ luôn là sai.Hãy xem so sánh này -
NULL = NULL -- false, since both are unknown, so the truth value of this expression can't be determined.
NULL = 4 -- false
4 = 4 -- true, since both values are known.
Nếu bạn muốn tìm nạp các bản ghi có chứa NULL
, bạn cần phải viết lại truy vấn của mình theo cách này -
where fk 4
OR fk is null;
Để biết thêm thông tin, xem Wikipedia.
Đã trả lời ngày 26 tháng 7 năm 2011 lúc 8:04Jul 26, 2011 at 8:04
MatmatMD Sayem Ahmed
198K40 Huy hiệu vàng385 Huy hiệu bạc400 Huy hiệu Đồng26 gold badges109 silver badges177 bronze badges
Bởi vì NULL
là viết tắt của
SELECT * FROM bla WHERE fk 4
2 và khi bạn so sánh giá trị với SELECT * FROM bla WHERE fk 4
2, kết quả sẽ luôn là sai.FALSE even against NULL itself. So, working with NULL is only done with the aforementioned functions [and SELECT * FROM bla WHERE fk 4
7]. Your query could be rewritten asSELECT * FROM bla WHERE fk 4 OR fk IS NULL
Hãy xem so sánh này -Jul 26, 2011 at 8:06
Nếu bạn muốn tìm nạp các bản ghi có chứa NULL
, bạn cần phải viết lại truy vấn của mình theo cách này -Naltharial
Để biết thêm thông tin, xem Wikipedia.13 silver badges19 bronze badges
MD Sayem Ahmedmd Sayem Ahmed
28.2K26 Huy hiệu vàng109 Huy hiệu bạc177 Huy hiệu đồng
NULL không phải là một giá trị, mà là sự vắng mặt không xác định của một giá trị. Nếu bạn muốn kiểm tra NULL, bạn phải làm điều đó một cách rõ ràng bằng cách sử dụng
SELECT * FROM bla WHERE fk 4
5 và SELECT * FROM bla WHERE fk 4
6. Ví dụ, NULL sẽ kiểm tra sai ngay cả chống lại chính NULL. Vì vậy, làm việc với NULL chỉ được thực hiện với các chức năng đã nói ở trên [và SELECT * FROM bla WHERE fk 4
7]. Truy vấn của bạn có thể được viết lại làSELECT * FROM bla WHERE fk 4 OR FK IS NULL
Đã trả lời ngày 26 tháng 7 năm 2011 lúc 8:06Jul 26, 2011 at 8:05
NaltharialnaltharialOded
2.07213 Huy hiệu bạc19 Huy hiệu đồng98 gold badges873 silver badges1002 bronze badges
NULL
đặc biệt ở chỗ nó đại diện cho một giá trị "chưa biết". Điều này không thể được so sánh với các số [hoặc bất kỳ giá trị nào khác cho vấn đề đó], do đó kết quả -
SELECT * FROM bla WHERE NOT [fk = 4]
Logic:
NULL = 4 --false
5 = 4 --false
4 = 4 --true
NOT [NULL = 4] --true
NOT [5 = 4] --true
NOT [4 = 4] --false
NULL
4? Câu trả lời là - không biết. 4 có khác với một giá trị không xác định không?Jul 26, 2011 at 8:09
Thay vào đó hãy thử điều này:Alex
Đã trả lời ngày 26 tháng 7 năm 2011 lúc 8:055 gold badges40 silver badges58 bronze badges
Odedoded
482K98 Huy hiệu vàng873 Huy hiệu bạc1002 Huy hiệu Đồng
Bạn nghĩ thế nào vềDec 12, 2016 at 7:28
MySQL là điều kiện null được sử dụng để kiểm tra xem có giá trị null trong biểu thức không. Nó được sử dụng với chọn, chèn, cập nhật và xóa câu lệnh.
Syntax:
Tham số
Biểu thức: Nó chỉ định một giá trị để kiểm tra nếu đó là giá trị null. It specifies a value to test if it is NULL value.
Hãy xem xét một bảng "nhân viên" có dữ liệu sau.
Thực hiện truy vấn sau:
Output:
Lưu ý: Ở đây, bạn đang nhận được kết quả trống vì không có giá trị null trong cột Cán bộ_name. Here, you are getting the empty result because there is no NULL value in officer_name column.
Nhận xét
- Gửi phản hồi của bạn đến [Email & NBSP; được bảo vệ]