在下面的查询中,虽然赋值为0,但条件@ PARAM =''返回true。 任何人都可以解释为什么sql server将0视为''以及如何处理这种情况?
declare @param int
set @PARAM=0
select @PARAM
SELECT @PARAM=CASE WHEN @PARAM='' THEN NULL ELSE @PARAM END
select @PARAM
答案 0 :(得分:2)
SQL Server隐式地将空字符串强制转换为0,因此这就是获得此结果的原因。
看起来好像这个问题也出现在这里:
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=155339
我引用这个论坛robvolk的回应如下:
“然后使用Russell所说的显式转换。你无法控制SQL 服务器的隐式转换机制,你只能解决它。“
答案 1 :(得分:-1)
您无法根据整数值检查字符串。如下更改查询。然后它开始给出错误。 “将varchar值'Test'转换为数据类型int时转换失败。”
**declare @param int
set @PARAM=0
select @PARAM
SELECT @PARAM = CASE WHEN @PARAM='' THEN 'Test' ELSE @PARAM END
select @PARAM**