Представление MySQL:Как мне установить значение по умолчанию для вычисляемого поля равным 0?

StackOverflow https://stackoverflow.com/questions/1885070

  •  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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top