MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

Jak działa funkcja COALESCE() w MariaDB

W MariaDB funkcja COALESCE() operator zwraca pierwszą wartość inną niż NULL na liście lub NULL, jeśli nie ma wartości innych niż NULL.

Składnia

Składnia wygląda tak:

COALESCE(value,...)

Przykład

Oto prosty przykład do zademonstrowania:

SELECT COALESCE(null, 'Red', 'Black');

Wynik:

Red

W tym przypadku Red była pierwszą wartością inną niż NULL, więc COALESCE() zwrócił tę wartość.

Black również nie był NULL, ale pojawił się po Red więc nie został zwrócony.

Przykład bazy danych

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

SELECT
    PetName,
    DOB AS "Date of Birth"
FROM Pets;

I otrzymujemy następujący wynik:

+---------+---------------+
| PetName | Date of Birth |
+---------+---------------+
| 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          |
+---------+---------------+

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

Gdybyśmy chcieli zastąpić NULL z inną wartością, możemy zmienić zapytanie w następujący sposób:

SELECT
    PetName,
    COALESCE(DOB, 'None Supplied') AS "Date of Birth"
FROM Pets;

Wynik:

+---------+---------------+
| PetName | Date of Birth |
+---------+---------------+
| 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 |
+---------+---------------+

Wyrażenia

COALESCE() zwraca bieżącą wartość pierwszego wyrażenia, które początkowo nie ma wartości NULL . Dlatego jeśli przekażemy takie wyrażenie:

SELECT COALESCE( null, 5 * 2 );

Otrzymujemy to:

10

Gdy wszystkie wartości są NULL

Jeśli wszystkie wartości są NULL , COALESCE() zwraca NULL :

SELECT COALESCE( null, null );

Wynik:

NULL

COALESCE() vs IFNULL()

W przypadku użycia z dwiema wartościami COALESCE() działa tak samo jak IFNULL :

SET @a = null, @b = 52;
SELECT 
    COALESCE(@a, @b), 
    IFNULL(@a, @b);

Wynik:

+------------------+----------------+
| COALESCE(@a, @b) | IFNULL(@a, @b) |
+------------------+----------------+
| 52               | 52             |
+------------------+----------------+

Nieprawidłowa liczba argumentów

Używanie COALESCE() bez żadnych argumentów powoduje błąd:

SELECT COALESCE();

Wynik:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zastąpić pośredniego MySQL lub MariaDB Master serwerem Binlog przy użyciu MaxScale?

  2. MariaDB ROWNUM() Wyjaśnione

  3. Unikanie blokady dostawcy bazy danych dla MySQL lub MariaDB

  4. Radzenie sobie z długimi zapytaniami MySQL

  5. Jak działa SLEEP() w MariaDB