Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Toán tử SQL không bằng (! =) Cho người mới bắt đầu

Trong SQL, toán tử không bằng (!= ) so sánh tính không bằng nhau của hai biểu thức. Đó là, nó kiểm tra xem một biểu thức có không bằng một biểu thức khác.

Nếu một trong hai hoặc cả hai toán hạng là NULL , NULL được trả lại.

SQL cũng có một toán tử khác không bằng (<> ), làm điều tương tự. Cái nào bạn sử dụng có thể phụ thuộc vào DBMS của bạn, cái nào bạn cảm thấy thoải mái nhất khi sử dụng và có lẽ cả tổ chức của bạn có bất kỳ quy ước mã hóa nào quy định cái nào nên được sử dụng hay không.

Bảng Nguồn

Hãy tưởng tượng cơ sở dữ liệu của chúng ta chứa bảng sau. Đây là bảng chúng tôi sẽ sử dụng cho các ví dụ trên trang này.

SELECT * FROM Owners;

Kết quả:

+-----------+-------------+------------+----------------+-------------------+
| OwnerId   | FirstName   | LastName   | Phone          | Email             |
|-----------+-------------+------------+----------------+-------------------|
| 1         | Homer       | Connery    | (308) 555-0100 | [email protected] |
| 2         | Bart        | Pitt       | (231) 465-3497 | [email protected]  |
| 3         | Nancy       | Simpson    | (489) 591-0408 | NULL              |
| 4         | Boris       | Trump      | (349) 611-8908 | NULL              |
| 5         | Woody       | Eastwood   | (308) 555-0112 | [email protected] |
| 6         | Burt        | Tyson      | (309) 565-0112 | [email protected]  |
+-----------+-------------+------------+----------------+-------------------+

Ví dụ

Nếu chúng tôi muốn trả lại danh sách tất cả chủ sở hữu không có OwnerId trong tổng số 3 , chúng tôi có thể làm điều này:

SELECT *
FROM Owners
WHERE OwnerId != 3;

Kết quả:

+-----------+-------------+------------+----------------+-------------------+
| OwnerId   | FirstName   | LastName   | Phone          | Email             |
|-----------+-------------+------------+----------------+-------------------|
| 1         | Homer       | Connery    | (308) 555-0100 | [email protected] |
| 2         | Bart        | Pitt       | (231) 465-3497 | [email protected]  |
| 4         | Boris       | Trump      | (349) 611-8908 | NULL              |
| 5         | Woody       | Eastwood   | (308) 555-0112 | [email protected] |
| 6         | Burt        | Tyson      | (309) 565-0112 | [email protected]  |
+-----------+-------------+------------+----------------+-------------------+

Truy vấn của chúng tôi sử dụng toán tử không bằng với (!= ) để kiểm tra xem OwnerId cột không bằng 3 . Truy vấn trả về tất cả chủ sở hữu ngoại trừ chủ sở hữu số 3.

Chuỗi

Khi so sánh với một giá trị chuỗi, hãy sử dụng dấu ngoặc kép xung quanh chuỗi. Ví dụ:nếu chúng tôi muốn nhận thông tin về tất cả chủ sở hữu có tên không phải là Homer, chúng tôi có thể làm như sau:

SELECT *
FROM Owners
WHERE FirstName != 'Homer';

Kết quả:

+-----------+-------------+------------+----------------+-------------------+
| OwnerId   | FirstName   | LastName   | Phone          | Email             |
|-----------+-------------+------------+----------------+-------------------|
| 2         | Bart        | Pitt       | (231) 465-3497 | [email protected]  |
| 3         | Nancy       | Simpson    | (489) 591-0408 | NULL              |
| 4         | Boris       | Trump      | (349) 611-8908 | NULL              |
| 5         | Woody       | Eastwood   | (308) 555-0112 | [email protected] |
| 6         | Burt        | Tyson      | (309) 565-0112 | [email protected]  |
+-----------+-------------+------------+----------------+-------------------+

Nhiều điều kiện

Nếu bạn có nhiều điều kiện, bạn có thể sử dụng nhiều toán tử (cho dù cả hai toán tử giống nhau hay khác nhau).

Như thế này:

SELECT * FROM Owners 
WHERE OwnerId != 1 AND OwnerId != 3;

Kết quả:

+-----------+-------------+------------+----------------+-------------------+
| OwnerId   | FirstName   | LastName   | Phone          | Email             |
|-----------+-------------+------------+----------------+-------------------|
| 2         | Bart        | Pitt       | (231) 465-3497 | [email protected]  |
| 4         | Boris       | Trump      | (349) 611-8908 | NULL              |
| 5         | Woody       | Eastwood   | (308) 555-0112 | [email protected] |
| 6         | Burt        | Tyson      | (309) 565-0112 | [email protected]  |
+-----------+-------------+------------+----------------+-------------------+

Khi bạn bắt đầu sử dụng nhiều điều kiện hơn, bạn nên sử dụng dấu ngoặc đơn để bao quanh các điều kiện mà bạn muốn được đánh giá trước. Nếu bạn không làm điều này, bạn có thể nhận được kết quả không mong muốn do các điều kiện được đánh giá theo thứ tự mà bạn không có ý định.

Giảm thiểu điều kiện

Nếu bạn sử dụng NOT toán tử để phủ định điều kiện được cung cấp bởi toán tử không bằng với, cuối cùng bạn sẽ nhận được kết quả của bằng (= ) toán tử:

SELECT *
FROM Owners
WHERE NOT FirstName != 'Homer';

Kết quả:

+-----------+-------------+------------+----------------+-------------------+
| OwnerId   | FirstName   | LastName   | Phone          | Email             |
|-----------+-------------+------------+----------------+-------------------|
| 1         | Homer       | Connery    | (308) 555-0100 | [email protected] |
+-----------+-------------+------------+----------------+-------------------+

Trong trường hợp này, tốt hơn hết bạn chỉ nên sử dụng dấu bằng (= ), như sau:

SELECT *
FROM Owners
WHERE FirstName = 'Homer';

Tất nhiên, bản thân điều này có thể bị phủ định với NOT toán tử, sau đó sẽ cho chúng ta cùng một kết quả không bằng (!= ) nhà điều hành cung cấp cho chúng tôi:

SELECT *
FROM Owners
WHERE NOT FirstName = 'Homer';

Giá trị NULL

Bạn có thể nhận thấy rằng bảng mẫu ban đầu của chúng tôi chứa một vài NULL các giá trị trong Email cột.

Một cột chứa NULL nghĩa là nó không có giá trị. Điều này khác với 0 hoặc false , hoặc thậm chí là một chuỗi trống.

Bạn không thể sử dụng toán tử không bằng với để so sánh với NULL . Trên thực tế, điều này có thể phụ thuộc vào DBMS của bạn và cấu hình của nó. Nhưng bây giờ, hãy xem điều gì sẽ xảy ra nếu tôi cố gắng so sánh Email cột thành NULL .

SELECT * FROM Owners 
WHERE Email != NULL;

Kết quả:

(0 rows affected)

Cách kiểm tra không phải NULL các giá trị được sử dụng IS NOT NULL .

Do đó, chúng ta cần viết lại câu lệnh trên như sau.

SELECT * FROM Owners 
WHERE Email IS NOT NULL;

Kết quả:

+-----------+-------------+------------+----------------+-------------------+
| OwnerId   | FirstName   | LastName   | Phone          | Email             |
|-----------+-------------+------------+----------------+-------------------|
| 1         | Homer       | Connery    | (308) 555-0100 | [email protected] |
| 2         | Bart        | Pitt       | (231) 465-3497 | [email protected]  |
| 5         | Woody       | Eastwood   | (308) 555-0112 | [email protected] |
| 6         | Burt        | Tyson      | (309) 565-0112 | [email protected]  |
+-----------+-------------+------------+----------------+-------------------+

Bây giờ chúng tôi chỉ nhận được những hàng không phải là NULL trong Email cột.

Nếu bạn quan tâm, hãy xem SQL Server ANSI_NULLS Explained để xem cách bạn có thể thay đổi cách NULL các giá trị được xử lý trong SQL Server.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhiều cách để xóa bản sao khỏi bảng SQL

  2. Ẩn danh các số nhận dạng gián tiếp để giảm rủi ro làm lại ID

  3. Cải thiện bảo trì phân vùng với số liệu thống kê gia tăng

  4. Tạo số nguyên ngẫu nhiên mà không có xung đột

  5. NULL Complexities - Phần 2