У меня есть оператор select, где я хочу сделать select conditional следующим образом
IFNULL(field_a,field_a,feild_b)
чтобы он проверял поле a, если a равно null, тогда select будет полем b
возможно?
У меня есть оператор select, где я хочу сделать select conditional следующим образом
IFNULL(field_a,field_a,feild_b)
чтобы он проверял поле a, если a равно null, тогда select будет полем b
возможно?
Используйте COALESCE:
SELECT COALESCE(field_a, field_b)
COALESCE - это стандартная функция ANSI, которая возвращает первое ненулевое значение из списка указанных столбцов, обрабатывая столбцы слева направо. Поэтому в примере, если field_a
имеет значение null, будет отображаться значение field_b
. Однако эта функция вернет NULL, если не указано ненулевое значение из указанных столбцов.
Он поддерживается MySQL (я использовал его в версии 4.1), SQL Server (начиная с версии 2000), Oracle 9i +...
и другой способ скин-кота (гибкий для не только нулевых сравнений)...
select if(field_a is not null, field_a, field_b) from...
Да, но это всего лишь два параметра:
IFNULL(field_a,field_b)
Если field_a
не равно null, оно будет возвращено. В противном случае возвращается field_b
.
Ссылка: IFNULL
Для большего количества примеров
MySQL IFNULL() с синтаксисом и примерами
Синтаксис
Синтаксис функции IFNULL:
IFNULL(expression_1,expression_2);
SELECT
name, IFNULL(businessphone, homephone) phone
FROM
users;
#The above query return this result from users table
+------------+-----------+----------+-----------
| id | name | phone |
+------------+-----------+----------+-----------
| 5 | Tommy Hill | (541) 754-3009 |
| 6 | John Smith | (541) 754-3110 |
| 10 | Mark Greenspan | (541) 754-3111 |
| 11 | Kelvin Row | (541) 754-3111 |
+------------+-----------+----------+-----------