在SQL过程中返回空或空

时间:2018-09-19 10:01:46

标签: sql-server stored-procedures null

使用的脚本不接受空值,但Nan我试图在SQL Server表中插入空值而不是0。为此,我有一个创建存储过程的想法,该存储过程会将Nan转换为null float。这是存储过程:

create procedure [dbo].fromNanToNull(@val VARCHAR)
   AS BEGIN
   DECLARE @Work float
   if @val like 'N%'    set @Work=CAST(NULL AS float)
   else set @work=CAST(@val AS float)
    return @work
   END

执行:

 exec  [dbo].fromNanToNull 'Nan'

但是我没有得到返回的空值,而是得到了一条消息,该消息告诉我们返回值被强制设为0。这是消息:

  

“ fromNanToNull”过程尝试返回NULL状态,   这是不允许的。而是返回状态0。

1 个答案:

答案 0 :(得分:1)

根据我的理解,@ val以n开头表示您将@work值转换为float,但即使@work也仅是float数据类型 如果@val以n开头,则表示应该显示@work值 其他表值,请清楚说明

    CREATE PROCEDURE [DBO].FROMNANTONULL(@VAL VARCHAR)
       AS BEGIN
      DECLARE @VAL VARCHAR(10)
 DECLARE @WORK FLOAT
IF (@VAL LIKE 'N%') 
  BEGIN 
SET @WORK=CAST(NULL AS FLOAT)
  END 
ELSE 
  BEGIN 
SET @WORK=CAST(@VAL AS FLOAT)
  END
       END