removing null value from string

允我心安 提交于 2019-12-12 04:57:09

问题


I want to show the translated name and description with language_id 'us' and 'ru'. My question is how can I remove the null values?

SELECT DISTINCT CASE WHEN LANGUAGE_ID = 'US' THEN COALESCE(TO_CHAR(TRANSLATED_NAME), ' ')
       END AS PRODUCT_NAME_US,
       CASE WHEN LANGUAGE_ID = 'US' THEN INITCAP(CONCAT(SUBSTR(TRANSLATED_DESCRIPTION, 1, 30), '...'))
       END AS PRODUCT_DESC_US,
       CASE WHEN LANGUAGE_ID = 'RU' THEN COALESCE(TO_CHAR(TRANSLATED_NAME), ' ')
       END AS PRODUCT_NAME_RU,
       CASE WHEN LANGUAGE_ID = 'RU' THEN INITCAP(CONCAT(SUBSTR(TRANSLATED_DESCRIPTION, 1, 30), '...'))
       END AS PRODUCT_DESC_RU
FROM PRODUCT_DESCRIPTIONS;

回答1:


I suspect you want something like this:

SELECT PRODUCT_ID,
       MAX(CASE WHEN LANGUAGE_ID = 'US' THEN COALESCE(TO_CHAR(TRANSLATED_NAME), ' ')
           END) AS PRODUCT_NAME_US,
       MAX(CASE WHEN LANGUAGE_ID = 'US' THEN INITCAP(CONCAT(SUBSTR(TRANSLATED_DESCRIPTION, 1, 30), '...'))
           END) AS PRODUCT_DESC_US,
       MAX(CASE WHEN LANGUAGE_ID = 'RU' THEN COALESCE(TO_CHAR(TRANSLATED_NAME), ' ')
           END) AS PRODUCT_NAME_RU,
       MAX(CASE WHEN LANGUAGE_ID = 'RU' THEN INITCAP(CONCAT(SUBSTR(TRANSLATED_DESCRIPTION, 1, 30), '...'))
           END) AS PRODUCT_DESC_RU
FROM PRODUCT_DESCRIPTIONS
GROUP BY PRODUCT_ID; -- whatever each row defines

This does an explicit aggregation for each product (use the appropriate id of course), putting the English and Russian translations in the appropriate columns.



来源:https://stackoverflow.com/questions/44761935/removing-null-value-from-string

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!