MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Как работи COALESCE() в MariaDB

В MariaDB, COALESCE() Операторът връща първата стойност, различна от NULL в списъка, или NULL, ако няма стойности, различни от NULL.

Синтаксис

Синтаксисът е така:

COALESCE(value,...)

Пример

Ето един прост пример за демонстрация:

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

Резултат:

Red

В този случай Red беше първата стойност, различна от NULL, и така COALESCE() върна тази стойност.

Black също не беше NULL, но дойде след Red и затова не беше върнато.

Пример за база данни

Да предположим, че изпълняваме следната заявка:

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

И получаваме следния резултат:

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

Можем да видим, че последните два реда имат стойности NULL в колоната DOB.

Ако искаме да заменим NULL с друга стойност бихме могли да променим заявката, както следва:

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

Резултат:

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

Изрази

COALESCE() връща текущата стойност на първия израз, който първоначално не се оценява на NULL . Следователно, ако предадем израз като този:

SELECT COALESCE( null, 5 * 2 );

Получаваме това:

10

Когато всички стойности са NULL

Ако всички стойности са NULL , COALESCE() връща NULL :

SELECT COALESCE( null, null );

Резултат:

NULL

COALESCE() срещу IFNULL()

Когато се използва с две стойности, COALESCE() работи по същия начин като IFNULL :

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

Резултат:

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

Невалиден брой аргументи

Използване на COALESCE() без никакви аргументи води до грешка:

SELECT COALESCE();

Резултат:

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. Внедряване на MySQL Galera Cluster 4.0 в Amazon AWS EC2

  2. HAProxy връзки срещу MySQL връзки - какво трябва да знаете

  3. Изберете Всичко преди или след определен символ в MariaDB

  4. Как да мигрираме WHMCS база данни към MariaDB Galera Cluster

  5. Как да защитите вашата MySQL или MariaDB база данни от SQL инжекция:Част втора