MySQL COALESCE с двумя аргументами?

COALESCE — это функция SQL, которая возвращает первое ненулевое выражение среди своих аргументов. Итак, в следующем утверждении...

SELECT USER.user_id, 
        USER.firstname, 
        USER.lastname, 
        ...
        COALESCE(EMPLOYEE.title, '') title, 
        ...
FROM USER

... в основном это говорит о том, что если EMPLOYEE.title равно NULL, то вернитесь и используйте вместо этого ''. Правильно ли я понимаю?


person Grateful    schedule 22.11.2016    source источник
comment
Какая часть кажется запутанной? Если параметр 1 равен нулю, он вернет второй параметр. Если это значение null, он вернет третий параметр... и так далее. Если каждый параметр имеет значение null, он возвращает значение null.   -  person Ash    schedule 22.11.2016
comment
Теперь все в порядке, @AshwinNair. Спасибо за ваше время.   -  person Grateful    schedule 22.11.2016


Ответы (1)


Предположим, что EMPLOYEE.title равно 'CEO'. Если мы подключим это к функции COALESCE, наш запрос будет выглядеть примерно так:

SELECT COALESCE('CEO', '') sub_sector;

Если бы мы запустили его, мы бы получили 'CEO'. Теперь предположим, что EMPLOYEE.title это NULL. Если мы подключим это к функции COALESCE, наш запрос будет выглядеть примерно так:

SELECT COALESCE(NULL, '') sub_sector;

Если мы запустим это, мы получим '', так как COALESCE возвращает первое ненулевое значение в своем списке аргументов. Поскольку первое значение равно NULL, оно проверит следующее значение, '', которое не равно NULL, и вернет его.

В случае вашего запроса, если поле EMPLOYEE.title имеет значение NULL, функция COALESCE вернет ''.

person Jacob Lambert    schedule 22.11.2016
comment
Понятно. Спасибо. - person Grateful; 22.11.2016