使用不接受空但南的脚本,我试图在 SQL 服务器表中插入空值而不是 0。因此,为此,我有一个想法,即创建将 Nan 转换为空浮点数的存储过程。这是存储过程:
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'
但我没有得到 null 作为回报,我收到了这条消息,它告诉返回被强制为 0。这是消息:
"fromNanToNull"过程试图返回 NULL 的状态, 这是不允许的。将改为返回状态 0。
根据我的理解@val以 n 开头意味着您正在@work值转换为浮点数,但即使@work也只是浮点数据类型 如果@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