sql >> Database >  >> RDS >> Mysql

Null-waarden vergelijken in MySQL

Soms moet u een kolom met een null-waarde vergelijken of twee kolommen vergelijken waarvan een ervan null-waarden heeft, of zelfs een null-controle voor kolommen uitvoeren. In dit artikel zullen we bekijken hoe u null-waarden in MySQL kunt vergelijken. Je kunt het gebruiken voor Null-vergelijking in MySQL.


Null-waarden vergelijken in MySQL

Stel dat u de volgende tabel sales(id, order_date, cost_price, selling_price) heeft

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 |
+------+------------+------------+---------------+

Stel dat u rijen wilt selecteren waar de kostprijs nul is. Normaal gesproken gebruikt u een uitdrukking zoals cost_price=null maar het werkt niet met NULL-waarden. In het geval van een nulvergelijking, moet u IS . gebruiken operator, dat wil zeggen, cost_price IS null

Dus de volgende SQL-query werkt niet

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

De volgende SQL-query zal werken . Hier is de SQL-query om rijen te selecteren waar cost_price null is.

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

Lees ook:Twee kolommen vergelijken in MySQL

Evenzo is hier de SQL-query om rijen te selecteren waarin kostprijs niet NULL is. In dit geval gebruiken we IS NIET telefoniste.

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 |
+------+------------+------------+---------------+

U kunt IS NULL en IS NOT NULL gebruiken met de instructies UPDATE, INSERT en DELETE.


Met UPDATE-verklaring

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 |
+------+------------+------------+---------------+

Lees ook:Hoe u elke N-de rij in MySQL kunt krijgen


Met INSERT-instructie

Hier is een voorbeeld dat gebruikmaakt van MySQL NULL-vergelijking in de instructie INSERT.

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


Met DELETE-instructie

Hier is een voorbeeld om Null-vergelijking te gebruiken in Delete Statement.

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 |
+------+------------+------------+---------------+

Hopelijk helpt dit artikel je om NULL-waarden in MySQL te vergelijken. Ubiq maakt het eenvoudig om data te visualiseren en te monitoren in realtime dashboards. Probeer Ubiq gratis.

  1. GROUP BY in Postgres - geen gelijkheid voor JSON-gegevenstype?

  2. Is de NOLOCK (Sql Server hint) een slechte gewoonte?

  3. Hoe te controleren of het bestand bestaat in PL/SQL?

  4. Een database-e-mailaccount verwijderen in SQL Server (T-SQL)