将null转换为datetime时发生SQL server错误

将null转换为datetime时发生SQL server错误,sql,sql-server,datetime,type-conversion,Sql,Sql Server,Datetime,Type Conversion,您是否曾在SQL Server“从字符串转换日期和/或时间时转换失败”中遇到此错误?我的查询正在将空值转换为datetime并引发该错误。为了修复它,我不得不从使用convert To cast切换到使用convert To cast,但我想知道原因: 如果您执行以下操作: SELECT CONVERT ( datetime, NULL, 101 ) 没有错误,它返回NULL 但是当您使用CHAR(0)时,它相当于NULL SELECT CONVERT ( datetime, CHAR(0),

您是否曾在SQL Server“从字符串转换日期和/或时间时转换失败”中遇到此错误?我的查询正在将空值转换为datetime并引发该错误。为了修复它,我不得不从使用convert To cast切换到使用convert To cast,但我想知道原因:

如果您执行以下操作:

SELECT CONVERT ( datetime, NULL, 101 )
没有错误,它返回NULL

但是当您使用CHAR(0)时,它相当于NULL

SELECT CONVERT ( datetime, CHAR(0), 101 )

如果出现错误,NULL或CHAR(0)之间是否存在差异?

表示
NULL
的字符与
NULL
值不相等


select char(0)
不返回
null
,它返回带有ascii码
0
的字符,表示
null
的字符和
null
值不相等

select char(0)
不返回
null
,它返回带有ascii码的字符
0

断言char(0)等于null为false<代码>选择ascii(空)B,ascii(字符(0))一个为空,一个不为空。断言字符(0)等于空是错误的<代码>选择ascii(空)B,ascii(字符(0))一个为空,一个不为空。