Представление MySQL:Как мне установить значение по умолчанию для вычисляемого поля равным 0?
-
19-09-2019 - |
Вопрос
Я использую следующую инструкцию для создания процентного расчета в представлении:
круглый(((Surveys
.RejectedAsAdvertising
/ Surveys
.Responses
) * 100),0) КАК PercentageAdvertising
По сути, я делю количество ответов на определенный вопрос (в данном случае, что-то считается рекламой) на общее количество ответов.
В итоге у меня есть столбцы, в которых показаны проценты по каждому из пяти возможных ответов на опрос ("Это реклама?", "Это скучно?" и т.д.).
Это работает отлично, но есть одна вещь, которую я хотел бы подправить.Когда тип ответа (например, реклама) не имеет никаких голосов, мое вычисляемое поле получает нулевое значение.
При определении моего представления, как я могу указать значение по умолчанию 0?
Спасибо.
Решение
Вам нужен coalesce
там, внутри.Он выбирает первый ненулевой аргумент, поэтому вам нужно что-то вроде:
coalesce(
round(
((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100)
,0)
,0)
AS PercentageAdvertising
Затем, когда результат раунда будет равен нулю, вместо этого он выдаст вам ноль.
Другие советы
СЛИВАТЬСЯ это предпочтительный подход, поскольку это стандартный способ обработки оценки ANSI, когда параметр равен null.Будучи ANSI, тот же синтаксис поддерживается в Oracle, SQL Server, Postgres и т.д., что упрощает перенос запроса между базами данных, если это необходимо.
COALESCE(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)
IFNULL ( ПОЛНОЕ число ) является ли синтаксис специфичным для MySQL:
IFNULL(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)