sql-server – 为什么0等于空字符串?
我需要一些帮助来找到为什么以下T-SQL语句返回1(true): SELECT IIF( 0 = '',1,0) 我猜有人改变了ANSI选项,例如SET ANSI_NULLS或导致该行为的其他东西. 我的问题是我正在加入一些值,在最后一行中我有值由0和”值连接,这是不正确的. 解决方法这只是记录在案的行为.我认为没有人搞砸这些设置.请参阅MSDN上的data type precedence.
如注释中所述,空字符串在任何数字类型中转换为0,在转换为日期时转换为1900-01-01 00:00:00.000. 编辑:我认为您的真正问题是您的设计是必须加入不同数据类型的字段.解决这个问题的唯一方法是对join子句进行转换,这会损害查询性能.主要问题可能在于架构设计 编辑: 这段代码: SELECT CONVERT(int,'') SELECT CONVERT(float,'') SELECT CONVERT(date,'') SELECT CONVERT(datetime,'') 生成此输出: 0 0 1900-01-01 1900-01-01 00:00:00.000 那么你可以期望这种行为在其他前面的数据类型之间是一致的,并且期望将0转换为日期会产生相同的任意值,但事实并非如此. SELECT CONVERT(date,0) 产生
因为它不是supported conversion 而 SELECT CONVERT(datetime,0) 返回
所以,是的,这是奇怪和随意的,但实际上是记录和解释的. (编辑:淮安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |