2016-08-22 4 views
0

У меня есть этот запрос на PostgreSQLunnest SQL с Postgres возвращает пустые строки

SELECT 
    unnest(array[ sale_contact_name, purchase_contact_name, admin_contact_name]) AS name , 
    unnest(array[ sale_contact_mobile , purchase_contact_mobile , admin_contact_mobile ]) AS mobile , 
    unnest(array[ sale_contact_phone, purchase_contact_phone, admin_contact_phone]) AS phone 
from company_t 
where companyCode = 'anything' ; 

Я получаю пустую строку, если нет данных. Я не wnat, чтобы получить эти пустые строки, как я могу это сделать

+0

не связан с Q, но: 'выберите * from company_t, unsest (array [...], array [...], ...) где ... 'может быть более удобным. – Abelisto

ответ

0

Вы можете использовать CASE операторы для обработки пустых строк, если они произойдут:

SELECT CASE WHEN t.name = '' THEN 'Alt name' ELSE t.name END, 
     CASE WHEN t.mobile = '' THEN 'Alt mobile' ELSE t.mobile END, 
     CASE WHEN t.phone = '' THEN 'Alt phone' ELSE t.phone END 
FROM 
(
    SELECT unnest(array[ sale_contact_name, purchase_contact_name, admin_contact_name]) AS name, 
      unnest(array[ sale_contact_mobile, purchase_contact_mobile , admin_contact_mobile ]) AS mobile, 
      unnest(array[ sale_contact_phone, purchase_contact_phone, admin_contact_phone]) AS phone 
    FROM company_t 
    WHERE companyCode = 'anything' 
) t 
Смежные вопросы