Ответ 1
SELECT IFNULL(NULLIF(Field1,''),Field2)
NULLIF возвращает NULL, если поле 1 пусто, а IFNULL возвращает поле 1, если оно не пустое или NULL и поле 2 в противном случае.
У меня есть два поля, которые я сравниваю с функцией MySQL COALESCE(). Например, COALESCE(Field1, Field2)
. Проблема в том, что поле1 иногда пустое, но не пустое; поскольку он не null COALESCE()
выбирает Field1, хотя его пробел. В этом случае мне нужно выбрать Field2.
Я знаю, что могу написать инструкцию if-then-else (CASE) в запросе, чтобы проверить это, но есть ли простая простая функция, например COALESCE()
для пустых, но не нулевых полей?
SELECT IFNULL(NULLIF(Field1,''),Field2)
NULLIF возвращает NULL, если поле 1 пусто, а IFNULL возвращает поле 1, если оно не пустое или NULL и поле 2 в противном случае.
Вы можете использовать выражение CASE
:
CASE WHEN Field1 <> '' THEN Field1 ELSE Field2 END
Я знаю, что опаздываю на вечеринку здесь, но есть способ сделать это, продолжая использовать COALESCE(). Тогда это будет работать, если ваше значение было NULL или ".".
Select COALESCE(NULLIF(Field1,''), Field2)