Как я могу добавить значение по умолчанию для нулевых значений при использовании string_agg в SQL? - PullRequest
0 голосов
/ 21 июня 2019

У меня есть это в запросе на выборку:

  string_agg(CAST('(' || item.name || ', price:' || item.price || ')' AS text), ' ') as item_price,

, и иногда цена равна нулю, и я хочу, чтобы это просто по умолчанию 'TBD'.Есть ли способ сделать что-то вроде item.price OR "TBD" или добавить значение по умолчанию, не добавляя значение по умолчанию в столбец цены?

Ответы [ 3 ]

0 голосов
/ 21 июня 2019

Вы должны использовать функцию COALESCE.Это вернет 'TBD', значение item.price равно NULL.Используйте это так:

string_agg(CAST('(' || item.name || ', price:' || COALESCE(item.price, 'TBD') || ')' AS text), ' ') as item_price,
0 голосов
/ 21 июня 2019

Функция SQL Coalesce используется для обработки значений NULL.В процессе оценки выражения значения NULL заменяются пользовательским значением.

Функция SQL Coalesce оценивает аргументы по порядку и всегда возвращает первое ненулевое значение из определенного списка аргументов.

В вашем случае использование функции будет:

string_agg(CAST('(' || item.name || ', price:' || COALESCE(item.price, 'TBD') || ')' AS text), ' ') as item_price,
0 голосов
/ 21 июня 2019

Использование COALESCE():

string_agg(CAST('(' || item.name || ', price:' || COALESCE(item.price, 'TBD') || ')' AS text), ' ') as item_price,

Вам может потребоваться привести к строке в зависимости от типа:

string_agg(CAST('(' || item.name || ', price:' || COALESCE(item.price::text, 'TBD') || ')' AS text), ' ') as item_price,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...