sql server NULL case处理

时间:2013-12-13 18:09:40

标签: sql sql-server

在下面的查询中,虽然赋值为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

2 个答案:

答案 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**