Форум вопросов и ответов

Форум вопросов и ответов (https://www.otvetnemail.ru/)
-   Продолжение старого архива (https://www.otvetnemail.ru/prodolzhenie-starogo-arhiva-804/)
-   -   HOWTO: OOo+Postgresql. Склеивание строк и NULL. (https://www.otvetnemail.ru/prodolzhenie-starogo-arhiva-804/howto-ooo-postgresql-skleivanie-strok-i-null-364748/)

Guest 01.10.2011 02:57

HOWTO: OOo+Postgresql. Склеивание строк и NULL.
 
Делаем например склейку трех полей в одно ФИО:Код:SELECT (c.fio_f || ' ' || c.fio_i || ' ' || c.fio_o) AS fioЕсли хотя бы одно из значений NULL, то вся строчка будет NULL, что не есть хорошо. Можно бороться с этим на стороне OOo, выставляя в свойствах соотв. полей на закладке "Данные" - "Пустая строка - NULL" = Нет (и в свойствах соотв. полей дописывать NOT NULL DEFAULT ''), но если по каким-то причинам (историческим/идеологическим) это не подходит, то можно модифицировать запрос:Код:SELECT (COALESCE(c.fio_f,'') || ' ' || COALESCE(c.fio_i,'') || ' ' || COALESCE(c.fio_o,'')) AS fioгде COALESCE(value1,value2,...) возвращает первое NOT NULL значение из всех перечисленных.Как подсказал BigAndy, функцию COALESCE можно использовать и для подсчета баланса, когда в один столбец записываются доходы, а в другой - расходы (без минуса). Как-то так:Код:SELECT COALESCE(debet,-credit) AS "inout"


Часовой пояс GMT, время: 22:44.


© www.otvetnemail.ru - Форум вопросов и ответов.