Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So vergleichen Sie Nullwerte in MySQL

Manchmal müssen Sie möglicherweise eine Spalte mit einem Nullwert vergleichen oder zwei Spalten vergleichen, von denen eine einen Nullwert hat, oder sogar eine Nullprüfung für Spalten durchführen. In diesem Artikel werden wir uns ansehen, wie man Nullwerte in MySQL vergleicht. Sie können es für den Null-Vergleich in MySQL verwenden.


So vergleichen Sie Nullwerte in MySQL

Nehmen wir an, Sie haben die folgende Tabelle sales(id, order_date, cost_price, sell_price)

mysql> create table sales(
                id int, 
                order_date date, 
                cost_price int, 
                selling_price int);

mysql> describe sales;
+---------------+---------+------+-----+---------+-------+
| Field         | Type    | Null | Key | Default | Extra |
+---------------+---------+------+-----+---------+-------+
| id            | int(11) | YES  |     | NULL    |       |
| order_date    | date    | YES  |     | NULL    |       |
| cost_price    | int(11) | YES  |     | NULL    |       |
| selling_price | int(11) | YES  |     | NULL    |       |
+---------------+---------+------+-----+---------+-------+

mysql> insert into sales(id,order_date,cost_price,selling_price)
       values(1,'2020-11-01',150,250),
             (2,'2020-11-02',200,300);

mysql> insert into sales(id,order_date, cost_price) 
       values(3, '2020-11-03',100);

mysql> insert into sales(id,order_date, selling_price) 
       values(4, '2020-11-03',100);

mysql> select * from sales;
+------+------------+------------+---------------+
| id   | order_date | cost_price | selling_price |
+------+------------+------------+---------------+
|    1 | 2020-11-01 |        150 |           250 |
|    2 | 2020-11-02 |        200 |           300 |
|    3 | 2020-11-03 |        100 |          NULL |
|    4 | 2020-11-03 |       NULL |           100 |
+------+------------+------------+---------------+

Angenommen, Sie möchten Zeilen auswählen, in denen der Einstandspreis null ist. Normalerweise würden Sie einen Ausdruck wie cost_price=null verwenden aber es funktioniert nicht mit NULL-Werten. Im Falle eines Nullvergleichs müssen Sie IS verwenden Operator, d. h. cost_price IS null

Daher wird die folgende SQL-Abfrage nicht funktionieren

mysql> select * from sales where cost_price=null;
Empty set (0.00 sec)

Die folgende SQL-Abfrage funktioniert . Hier ist die SQL-Abfrage, um Zeilen auszuwählen, in denen cost_price null ist.

mysql> select * from sales where cost_price is null;
+------+------------+------------+---------------+
| id   | order_date | cost_price | selling_price |
+------+------------+------------+---------------+
|    4 | 2020-11-03 |       NULL |           100 |
+------+------------+------------+---------------+

Lesen Sie auch:Wie man zwei Spalten in MySQL vergleicht

In ähnlicher Weise ist hier die SQL-Abfrage zum Auswählen von Zeilen, in denen cost_price nicht NULL ist. In diesem Fall verwenden wir IST NICHT Betreiber.

mysql> select * from sales where cost_price is not null;
+------+------------+------------+---------------+
| id   | order_date | cost_price | selling_price |
+------+------------+------------+---------------+
|    1 | 2020-11-01 |        150 |           250 |
|    2 | 2020-11-02 |        200 |           300 |
|    3 | 2020-11-03 |        100 |          NULL |
+------+------------+------------+---------------+

Sie können IS NULL und IS NOT NULL mit UPDATE-, INSERT- und DELETE-Anweisungen verwenden.


Mit UPDATE-Anweisung

mysql> update sales
       set selling_price=350
       where cost_price is null;

mysql> select * from sales;
+------+------------+------------+---------------+
| id   | order_date | cost_price | selling_price |
+------+------------+------------+---------------+
|    1 | 2020-11-01 |        150 |           250 |
|    2 | 2020-11-02 |        200 |           300 |
|    3 | 2020-11-03 |        100 |          NULL |
|    4 | 2020-11-03 |       NULL |           350 |
+------+------------+------------+---------------+

Lesen Sie auch:So erhalten Sie jede n-te Zeile in MySQL


Mit INSERT-Anweisung

Hier ist ein Beispiel, das den MySQL-NULL-Vergleich in der INSERT-Anweisung verwendet.

mysql> insert into new_sales(id,order_date, cost_price, selling_price)
      select * from sales
      where cost_price is null;


Mit DELETE-Anweisung

Hier ist ein Beispiel für die Verwendung des Null-Vergleichs in der Löschanweisung.

mysql> delete from sales
       where cost_price is null;

mysql> select * from sales;
+------+------------+------------+---------------+
| id   | order_date | cost_price | selling_price |
+------+------------+------------+---------------+
|    1 | 2020-11-01 |        150 |           250 |
|    2 | 2020-11-02 |        200 |           300 |
|    3 | 2020-11-03 |        100 |          NULL |
+------+------------+------------+---------------+

Hoffentlich hilft Ihnen dieser Artikel dabei, NULL-Werte in MySQL zu vergleichen. Ubiq macht es einfach, Daten zu visualisieren und sie in Echtzeit-Dashboards zu überwachen. Testen Sie Ubiq kostenlos.