如何控制sql server中null int字段到varchar的转换?
首先我想知道CAST
如何与NULL
字段一起使用以及当值为NULL
时它的行为如何?
例如,在表达式中:
(CAST(INT_FIELD as nvarchar(100))
如果值 INT_FIELD
为 NULL
会发生什么?
原因是,当我尝试执行以下操作时:
SELECT (CAST(INT_FIELD as nvarchar(100)) + ' ' + SOME_OTHER_FIELD FROM SOME_TABLE;
即使 SOME_OTHER_FIELD
不为 null,我也得到 NULL
。我猜它有某种逻辑 NULL + some = NULL
但我不确定。
我怎样才能控制这种行为?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您需要使用 ISNULL 或 COALESCE,因为
NULL
之间的大多数行操作都会导致NULL
。 NULL 的 >CAST 返回NULL
且NULL
+ 某些内容也是NULL
。在你的例子中,你应该这样做:当然,在我的例子中,如果两个字段都是
NULL
,它将返回''而不是'',但你明白了。You need to use ISNULL or COALESCE, since most row operation between a
NULL
is gonna result inNULL
. CAST of aNULL
returnsNULL
andNULL
+ something is alsoNULL
. In your example you should do something like this:Of course, in my example, if both fields are
NULL
it will return ' ' instead of '', but you get the idea.查看 COALESCE,您可以在其中找到第一个非空值,如果全部为空则返回 0,例如:
Look into COALESCE, where you can find the first non-null and return 0 if all are null, e.g:
尝试使用
COALESCE
Try using
COALESCE
通常,
NULL
+(-,/,*, etc)something
=NULL
。您可以使用
或者
SET CONCAT_NULL_YIELDS_NULL OFF
(更多详细信息)Normally,
NULL
+(-,/,*, etc)something
=NULL
.You can use
or you can
SET CONCAT_NULL_YIELDS_NULL OFF
(more details)