使用的脚本不接受空值,但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。
答案 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