Существует ли краткий способ выполнения одинаковой коалесценции для всех столбцов SQL-запроса? - PullRequest
0 голосов
/ 18 декабря 2018

Скажем, у меня есть запрос:

SELECT FirstName, LastName, Sex, Age FROM Human

Если по какой-либо причине в таблице есть ноль для значения, мы можем:

coalesce(FirstName, 'Unknown')

Для больших запросов с гораздо большим количеством столбцоввместо объединения каждого столбца отдельно есть способ объединить каждый отдельный столбец, но без дублирования количества операций coalesce?

Примерно так:

SELECT coalesce(FirstName, LastName, Sex, Age, 'Unknown') FROM Human

(я знаюэто неправильно и не сработает, это часть моего примера, пытающегося проиллюстрировать мои намерения).

В идеале вышеизложенное проверяет каждый столбец по очереди и заменяет все нули на «Неизвестно».Есть ли более простой способ сделать это, чем этот:

SELECT coalesce(FirstName,'Unknown'), coalesce(LastName,'Unknown'), coalesce(Sex, 'Unspecified'), coalesce(Age,'0') FROM Human

Кроме того, возвращаясь к этому примеру:

SELECT coalesce(FirstName, LastName, Sex, Age, 'Unknown') FROM Human

Есть ли способ применения избыточного изгиба coalesce как указано выше, кроме количества столбцов?Например, только для FirstName, LastName и Sex, а не для остальных.

1 Ответ

0 голосов
/ 18 декабря 2018

Нет, вы не можете этого сделать. COALESCE"- это синтаксическое сокращение для выражения CASE."

Вопросы, которые вы должны себе задать,

  1. Почему у меня есть эти NULL значения в первую очередь?
  2. Почему я обрабатываю представление моих данных в моем TSQL?TSQL - отличный инструмент для извлечения реляционных данных с использованием операций на основе множеств.TSQL - плохой инструмент для того, чтобы ваши данные выглядели хорошо.
  3. Что даст мне замена NULL на 'Unknown', кроме дефицита производительности и головной боли в будущем?
...