我有一个场景,我必须从日期删除一些文本,然后将它们转换为DATETIME。但是当我使用下面的方法时,它会导致NULL输出。
SELECT CAST(REPLACE('2017-09-21','',NULL) AS DATETIME)
使用CONVERT时会出现相同的输出。为什么会这样?
答案 0 :(得分:2)
它是documented:
如果任何其中一个参数为NULL,则返回NULL。
您将NULL
作为最后一个参数传递。
您可以使用NULLIF
代替REPLACE
:
SELECT CAST(NULLIF('20170921', '') AS DATETIME)
如果字符串为空,则返回NULL
,否则返回datetime
。
答案 1 :(得分:1)
您 指定了NULL。在SQL(所有产品)中,NULL表示 UNKNOWN 。将任何函数应用于未知值会导致未知结果,因此为NULL。例外是专门用于处理NULL的函数。
很难理解你的表达式是如何修复的,因为你试图用NULL替换空字符串。什么是空字符串应该匹配?