SQL: Cách thực hiện chuỗi không bằng


114

Tôi có câu hỏi sau

SELECT * FROM table
WHERE tester <> 'username';

Tôi mong đợi điều này sẽ trả về tất cả các kết quả trong đó người kiểm tra không phải là chuỗi username, Nhưng điều này không hoạt động. Tôi nghĩ rằng tôi đang tìm kiếm nghịch đảo của Liketoán tử nhưng tôi không chắc? Trong các tìm kiếm của mình, tôi đã tìm thấy giải pháp cho các số (đó là nơi tôi lấy <> từ đó), nhưng điều này dường như không hoạt động với các chuỗi.


5
Các giá trị mà bạn đang gặp vấn đề với NULLcác giá trị? ( NULL <> 'username' => NULL=> sai)?
Wrikken

Câu trả lời:


174

whereMệnh đề của bạn sẽ trả về tất cả các hàng testerkhông khớp usernameVÀ vị trí testerkhông rỗng.

Nếu bạn muốn bao gồm NULL, hãy thử:

where tester <> 'username' or tester is null

Nếu bạn đang tìm kiếm các chuỗi không chứa từ "tên người dùng" làm chuỗi con, thì bạn likecó thể sử dụng:

where tester not like '%username%'

42

Hãy thử truy vấn sau

select * from table
where NOT (tester = 'username')

20

Điều kiện NULL-safe sẽ giống như sau:

select * from table
where NOT (tester <=> 'username')

Vâng !, đây là điều duy nhất phù hợp với tôi, bởi vì tôi có một chuỗi của và của. Không biết toán tử <=>. Cảm ơn!
varta

Chỉ cần nhận thấy rằng các <=>nhà điều hành chỉ tồn tại trong MySQLthế giới, để biết thêm nhìn thấy là những gì <=>
Top-Thạc sĩ


7

Các strcompchức năng có thể thích hợp ở đây (trả về 0 khi chuỗi là giống hệt nhau):

 SELECT * from table WHERE Strcmp(user, testername) <> 0;

1

Một cách khác để nhận được kết quả

SELECT * from table WHERE SUBSTRING(tester, 1, 8)  <> 'username' or tester is null
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.