如何在sql server中控制将null int字段转换为varchar?

The*_*yan 17 sql sql-server null

首先,我想知道如何CAST使用NULL字段以及它在值时的行为方式NULL

例如在表达式中:

(CAST(INT_FIELD as nvarchar(100))
Run Code Online (Sandbox Code Playgroud)

如果值INT_FIELD是什么会发生什么NULL

原因是当我尝试执行以下操作时:

SELECT (CAST(INT_FIELD as nvarchar(100)) + ' ' + SOME_OTHER_FIELD FROM SOME_TABLE;
Run Code Online (Sandbox Code Playgroud)

NULL即使SOME_OTHER_FIELD不是空的我也会得到.我猜它有某种逻辑,NULL + something = NULL但我不确定.

我该如何控制这种行为?

Lam*_*mak 28

你需要使用ISNULLCOALESCE,因为a之间的大多数行操作NULL都会导致NULL.CAST A的NULL收益NULLNULL+东西也是NULL.在您的示例中,您应该执行以下操作:

SELECT ISNULL(CAST(INT_FIELD as nvarchar(100)),'') + ' ' + ISNULL(SOME_OTHER_FIELD,'')
FROM SOME_TABLE;
Run Code Online (Sandbox Code Playgroud)

当然,在我的例子中,如果两个字段都NULL将返回''而不是'',但你明白了.