Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wyjaśnienie MySQL IFNULL()

MySQL ma funkcję IFNULL() funkcja, która pozwala nam łatwo zastąpić wartości NULL inną wartością.

Składnia

IFNULL(expr1,expr2)

Jeśli expr1 nie jest NULL , IFNULL() zwraca expr1 ; w przeciwnym razie zwraca expr2 .

Przykład

Oto podstawowy przykład, który używa NULL stała:

SELECT IFNULL( null, 'n/a' );

Wynik:

n/a

W tym przypadku użyłem IFNULL() zastąpić wartość NULL ciągiem n/a .

Oto, co się dzieje, gdy pierwszym argumentem nie jest NULL :

SELECT IFNULL( 'Cow', 'n/a' );

Wynik:

Cow

W tym przypadku zwracany jest pierwszy argument, ponieważ nie jest on NULL .

Przykład bazy danych

Załóżmy, że uruchamiamy następujące zapytanie:

SELECT
    PetName,
    DOB
FROM Pets;

Wynik:

+---------+------------+
| PetName | DOB        |
+---------+------------+
| Fluffy  | 2020-11-20 |
| Fetch   | 2019-08-16 |
| Scratch | 2018-10-01 |
| Wag     | 2020-03-15 |
| Tweet   | 2020-11-28 |
| Fluffy  | 2020-09-17 |
| Bark    | NULL       |
| Meow    | NULL       |
| Woof    | 2020-10-03 |
| Ears    | 2022-01-11 |
+---------+------------+

Widzimy, że dwa wiersze mają wartości NULL w kolumnie DOB.

W poniższym zapytaniu używamy IFNULL() aby zastąpić wartości NULL bardziej znaczącą wartością dla czytelnika:

SELECT
    PetName,
    IFNULL( DOB, 'None supplied' )
FROM Pets;

Wynik:

+---------+--------------------------------+
| PetName | IFNULL( DOB, 'None supplied' ) |
+---------+--------------------------------+
| Fluffy  | 2020-11-20                     |
| Fetch   | 2019-08-16                     |
| Scratch | 2018-10-01                     |
| Wag     | 2020-03-15                     |
| Tweet   | 2020-11-28                     |
| Fluffy  | 2020-09-17                     |
| Bark    | None supplied                  |
| Meow    | None supplied                  |
| Woof    | 2020-10-03                     |
| Ears    | 2022-01-11                     |
+---------+--------------------------------+

Wyrażenia

Oceniana jest bieżąca wartość pierwszego argumentu. Dlatego jeśli dostarczymy wyrażenie podobne do następującego:

SELECT IFNULL( 2 * 5, 0 );

Otrzymujemy to:

10

Tak więc nie otrzymujemy 2 * 5 część. Otrzymujemy wynik tego wyrażenia (którym w tym przypadku jest 10 ).

To samo dotyczy sytuacji, gdy wynikiem wyrażenia jest NULL :

SELECT IFNULL( 2 / 0, 0 );

Otrzymujemy to:

0.0000

Warto jednak zachować ostrożność. Zero to wartość. NULL nie jest.

W powyższym przykładzie zwróciłem zero, gdy była wartość NULL, ale może to być mylące lub nawet całkowicie błędne. Wyobraź sobie, że dzielimy ceny i otrzymujemy cenę zerową. OK, jeśli dzielimy cenę przez zero, prawdopodobnie jest coś nie tak, ale jestem pewien, że rozumiesz.

W każdym razie zwykle lepiej jest użyć bardziej znaczącej wartości, która informuje czytelnika, że ​​nie ma żadnej wartości.

Przykład:

SELECT IFNULL( 2 / 0, 'No value' );

Wynik:

No value

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql -> wstaw do tbl (wybierz z innej tabeli) i kilka wartości domyślnych

  2. Podłączanie Visual COBOL do MySQL

  3. Eksportuj dane MySQL do Excela w PHP

  4. Jak zablokować pojedynczy rząd

  5. Co to jest CHAR_LENGTH() w MySQL?