将浮点值更新为null
本文关键字:null 更新 | 更新日期: 2023-09-27 18:25:30
我在MS SQL2008(C#)中有这个存储过程
ALTER PROCEDURE UpdateProducts
@ProductID INT, @Name nvarchar(50), @Length Float
AS
UPDATE Product
SET Name = @Name, Length = @Length
WHERE (ProductID = @ProductID)
长度在某些情况下为"(无)。但当插入"时,会插入值0。我希望该值为null。我该怎么做?这不起作用:
if (Length == "")
{
Length = null;
}
在进程中将默认值设置为NULL
,不必显式地将NULL
传递给进程。
CREATE PROC ..dbo.Proc ( @param1 int =NULL, @param2 varchar(40) = NULL ,etc)
此外,如果你必须从你的应用程序发送NULL,你会使用DBNull.Value
尝试DBNull.Value
:
if (Size == "")
{
Size = DBNull.Value;
}
并确保数据库列可以为null。
使用NULLIF
UPDATE Product
SET Name = @Name, Length = NULLIF(@Length, '')
WHERE (ProductID = @ProductID)
- 对于float,空字符串隐式转换为0,int。decimal会给出错误
- 空字符串和NULL不同
编辑:这处理不干净的输入,所以你不必担心它…