vfclists Asked: 2017-04-15 03:49:55 +0800 CST2017-04-15 03:49:55 +0800 CST 2017-04-15 03:49:55 +0800 CST || 是否 如果其中一列为空白,Postgres 中的运算符会导致空白结果? 772 我在 Postgres 中运行一个查询,使用||运算符连接一些列,似乎其中一列为空,整个结果为空。这是正常||行为吗? 我的意思是“空白” NULL。 postgresql operator 1 个回答 Voted Best Answer ypercubeᵀᴹ 2017-04-15T04:00:54+08:002017-04-15T04:00:54+08:00 取决于“空白”的含义NULL或空字符串。 如果它意味着NULL,那么是的,那是正常的。SELECT 'ab' || NULL ;将返回空值。 如果它表示空字符串,则否。SELECT 'ab' || '' ;会回来'ab'的。 为避免此问题,您可以使用以下方法将空值转换为空字符串COALESCE(): SELECT COALESCE(str1, '') || COALESCE(str2, '') || ... || COALESCE(strN, '') 或使用CONCAT()orCONCAT_WS()函数 - 忽略空值: SELECT CONCAT(str1, str2, ..., strN) SELECT CONCAT_WS('', str1, str2, ..., strN)
取决于“空白”的含义
NULL
或空字符串。如果它意味着
NULL
,那么是的,那是正常的。SELECT 'ab' || NULL ;
将返回空值。如果它表示空字符串,则否。
SELECT 'ab' || '' ;
会回来'ab'
的。为避免此问题,您可以使用以下方法将空值转换为空字符串
COALESCE()
:或使用
CONCAT()
orCONCAT_WS()
函数 - 忽略空值: