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

0

Я использую следующий оператор для создания процентного расчета в представлении:

round (((Surveys. RejectedAsAdvertising/Surveys. Responses) * 100), 0) AS PercentageAdvertising

В принципе, я разделяю количество ответов на определенный вопрос (в данном случае, что-то считается рекламой) на общее количество ответов.

В конце концов, у меня есть столбцы, показывающие проценты для каждого из пяти возможных ответов опроса ( "Это реклама?", "Это скучно?" и т.д.).

Это прекрасно работает, но есть одна вещь, которую я хотел бы настроить. Когда тип ответа (например, реклама) не имеет голосов, мое вычисленное поле получает значение NULL.

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

Спасибо.

Теги:
calculated-columns

2 ответа

1
Лучший ответ

Вам нужен coalesce. Он выбирает первый аргумент, отличный от NULL, поэтому вам нужно что-то вроде:

coalesce(
    round(
        ((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100)
        ,0)
    ,0)
    AS PercentageAdvertising

Затем, когда результат раунда равен NULL, он вместо этого даст вам нуль.

  • 0
    Спасибо за ваш четкий ответ. Я ценю это.
2

COALESCE является предпочтительным подходом, поскольку он является стандартным методом ANSI для обработки оценки, когда параметр равен нулю. Будучи 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)
  • 0
    Спасибо. Как раз то, что мне было нужно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню