DECLARE @shuliang int
SET @shuliang = 0
SELECT @shuliang = SUM(CONVERT (INT, [yingtuishu]))
FROM [Faliaominxi]
WHERE [liaohao] = @liaohao
AND [mark] = '0'
AND [faliaodan] <> @faliaodan
这样的一个存储过程片断,当查询不到符合条件的数据时 将 @shuliang 赋值 0,我用
IF(@shuliang=NULL)或者是
Begin
set @shuliang=0
End
IF(@shuliang='')都不成功,我更改数据类型后使用
Begin
set @shuliang=0
End
IF(convert(nvarchar(50), @shuliang)=NULL)或者是
Begin
set @shuliang=0
End
IF(convert(nvarchar(50), @shuliang)='')也不行 请高手指点下,当INT型的数据类型,没有获取到任何数据的时候,需要怎么来给变量赋值?
Begin
set @shuliang=0
End
谢谢
------最佳解决方案--------------------
isnull(@shuliang,0)
------其他解决方案--------------------
DECLARE @shuliang int
SET @shuliang = 0
SELECT @shuliang = isnull(SUM(CONVERT (INT, [yingtuishu])),0)--这样转化过后是不会出现''的情况
FROM [Faliaominxi]
WHERE [liaohao] = @liaohao
AND [mark] = '0'
AND [faliaodan] <> @faliaodan
------其他解决方案--------------------
ISNULL()
------其他解决方案--------------------
如果真是“没有”那就是null,int是要么有,要么没有,不会存在空字符串
------其他解决方案--------------------
isnull(@shuliang,0) 直接这样写吗 不对啊
消息 102,级别 15,状态 1,过程 wl_jiecun,第 37 行
'isnull' 附近有语法错误。
------其他解决方案--------------------
已经搞定 ,谢谢!
------其他解决方案--------------------
直接写肯定不对拉,另外,昨晚就想问你的。[yingtuishu]这个是什么类型?
------其他解决方案--------------------
DECLARE @shuliang int
SET @shuliang = 0
SELECT @shuliang = SUM(cast( ISNULL([yingtuishu],0) as INT))
FROM [Faliaominxi]
WHERE [liaohao] = @liaohao
AND [mark] = '0'
AND [faliaodan] <> @faliaodan
------其他解决方案--------------------
@shuliang=NULL --@shuliang is NULL
------其他解决方案--------------------
本来是写成int 的 但是怕出错,直接转成INT 也怕存在影响,SQL里有没有双精度型这样的数据类型啊
------其他解决方案--------------------
decimal应该算双精度。那你那个convert就可以不要了。转换需要耗时的。
------其他解决方案--------------------