Một câu trả lời mà tôi đã sử dụng đã làm việc cho tôi khá tốt mà tôi chưa thấy ở đây (câu hỏi này rất cũ, vì vậy nó có thể không hoạt động sau đó) thực sự là
SELECT t.phone,
t.phone2
FROM jewishyellow.users t
WHERE t.phone LIKE '813%'
AND t.phone2 > ''
Lưu ý > ''
phần này sẽ kiểm tra xem giá trị không phải là null và nếu giá trị không chỉ là khoảng trắng hoặc trống.
Về cơ bản, nếu trường có một cái gì đó trong nó ngoài khoảng trắng hoặc NULL
, thì đó là sự thật. Nó cũng siêu ngắn, vì vậy nó dễ dàng để ghi, và một cộng trong COALESCE()
và IFNULL()
chức năng là điều này là chỉ số thân thiện, vì bạn đang không so sánh sản lượng của một hàm trên một lĩnh vực để bất cứ điều gì.
Các trường hợp thử nghiệm:
SELECT if(NULL > '','true','false');-- false
SELECT if('' > '','true','false');-- false
SELECT if(' ' > '','true','false');-- false
SELECT if('\n' > '','true','false');-- false
SELECT if('\t' > '','true','false');-- false
SELECT if('Yeet' > '','true','false');-- true
CẬP NHẬT Có một sự cảnh báo về điều này mà tôi không mong đợi, nhưng các giá trị số bằng 0 hoặc thấp hơn không lớn hơn một chuỗi trống, vì vậy nếu bạn đang xử lý các số có thể bằng 0 hoặc âm thì KHÔNG LÀM NÀY , nó cắn tôi rất gần đây và rất khó gỡ lỗi :(
Nếu bạn đang sử dụng các chuỗi (char, varchar, text, v.v.), thì điều này sẽ hoàn toàn ổn, chỉ cần cẩn thận với số.
phone2
có một cái gì đó trong đó?" Mọi người đang đoán xem liệu bạn có nghĩaphone2
là KHÔNG PHẢI, không trống, không chỉ là khoảng trắng, v.v.