我使用+
连接几列的值。但是如果其中一列的值为 null
,+
将无法工作。例如:
Select null+ 'Test'
查询返回null而不是'Test'。
您有什么建议来解决这个问题?
我使用+
连接几列的值。但是如果其中一列的值为 null
,+
将无法工作。例如:
Select null+ 'Test'
查询返回null而不是'Test'。
您有什么建议来解决这个问题?
在SQL Server 2012之前的版本中,您应该使用
Select ISNULL(YourColumn,'') + 'Test' /*Or COALESCE(YourColumn,'')*/
为了避免这个问题。SET CONCAT_NULL_YIELDS_NULL OFF
,但该选项已被弃用。CONCAT
函数,该函数在连接时将NULL
视为空字符串。SELECT CONCAT(null,'Test')
使用IsNull:
SELECT IsNull(MyColumn, '') + 'Test' ...
ISNULL
,COALESCE
或CONCAT_NULL_YIELDS_NULL
。我建议在所有相关的地方都使用COALESCE
,因为它是标准的,并且在Oracle和SQL Server中都可以使用。如果您想使用弃用的功能,那就由您决定,但它们将在未来版本中停止工作,并且此连接选项与某些SQL Server功能不兼容。我自己不会使用它。 - Martin SmithCOALESCE
肯定可以,但据我所知,Oracle将空字符串视为NULL,因此我不知道最终结果会是什么! - Martin Smith+
进行字符串连接。 - Martin Smith