如何拆分 postgresql 中的字符串和 return 另一个字符串(如果为空)

How to split a string in postgresql and return another string if empty

我有一列需要根据“:”前后的内容分成两列。如果没有 ':',我需要第二列来读取 'None'.

示例:

original_a: 在美国昏昏欲睡:为什么我们很累以及如何应对 标题:困在美国 副标题: 为什么我们很累,该怎么办

original_b:冥想与谈话疗法 标题:冥想与谈话疗法 副标题:'None'

我尝试了子查询

SELECT headline, 
       CASE WHEN subtitle = ' ' THEN 'None' ELSE subtitle END as subtitle
FROM ( 
     SELECT split_part(headline, ':', 1) as headline, split_part(headline, ':', 2) as subtitle
     FROM table) as subquery

这可以很好地拆分原始列,但不会 return 'None' 当没有第二部分时。

我如何return'None'?谢谢

包含空结果的简单 COALESCE with a NULLIF 怎么样?

COALESCE return 是其参数中的第一个 non-null 值。

如果两个参数匹配,

NULLIF 将 return NULL。

SELECT 
 SPLIT_PART(headline, ':', 1) AS headline
,COALESCE(NULLIF(SPLIT_PART(headline, ':', 2), ''), 'None') AS subtitle
FROM table

您可以看到它正在运行 HERE