Подтвердить что ты не робот

COALESCE() для пустых (но не нулевых) полей

У меня есть два поля, которые я сравниваю с функцией MySQL COALESCE(). Например, COALESCE(Field1, Field2). Проблема в том, что поле1 иногда пустое, но не пустое; поскольку он не null COALESCE() выбирает Field1, хотя его пробел. В этом случае мне нужно выбрать Field2.

Я знаю, что могу написать инструкцию if-then-else (CASE) в запросе, чтобы проверить это, но есть ли простая простая функция, например COALESCE() для пустых, но не нулевых полей?

4b9b3361

Ответ 1

SELECT IFNULL(NULLIF(Field1,''),Field2)

NULLIF возвращает NULL, если поле 1 пусто, а IFNULL возвращает поле 1, если оно не пустое или NULL и поле 2 в противном случае.

Ответ 2

Вы можете использовать выражение CASE:

CASE WHEN Field1 <> '' THEN Field1 ELSE Field2 END

Ответ 3

Я знаю, что опаздываю на вечеринку здесь, но есть способ сделать это, продолжая использовать COALESCE(). Тогда это будет работать, если ваше значение было NULL или ".".

Select COALESCE(NULLIF(Field1,''), Field2)