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

MySQL COALESCE() Обяснено

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

Синтаксис

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

COALESCE(value,...)

Пример

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

SELECT COALESCE(null, 'Fish', 'Rabbit');

Резултат:

Fish

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

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

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

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

SELECT COALESCE( null, null );

Резултат:

NULL

Изрази

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

SELECT COALESCE( null, 2 * 10 );

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

20

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

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

SELECT
  PetName,
  PetType
FROM Pets;

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

PetName	PetType
------- -------
Meow	Cat
Woof	Dog
Tweet	Bird
Awk	NULL
Moo	Cow
Omph	NULL

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

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

SELECT
  PetName,
  COALESCE(PetType, 'Unknown') AS "PetType"
FROM Pets;

Резултат:

PetName	PetType
------- -------
Meow	Cat
Woof	Dog
Tweet	Bird
Awk	Unknown
Moo	Cow
Omph	Unknown

В този случай заменихме всички NULL стойности с низа Unknown .

Не е необходимо обаче да е низ. Ето още един пример, който заменя NULL стойности с цяло число:

SELECT 
  EmployeeName,
  Salary,
  COALESCE(Salary, 0) AS "Salary (adjusted)"
FROM Employees;

Резултат:

EmployeeName	Salary	Salary (adjusted)
--------------  ------  -----------------
Homer Einstein	NULL	0
Bart Hawking	100000	100000

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

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

SELECT COALESCE();

Резултат:

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL 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. SQL SELECT, за да получите първите N положителни цели числа

  2. Правете закъснение / цикъл, за да получите 10 произволни резултата

  3. Използване на MySQL IF EXISTS

  4. SQL заявка на множество стойности в една клетка

  5. Как да записвам и извличам изображение на моя сървър в java webapp