如何检查变量是否在SQL Server 2008存储过程中有值
问题描述:
我需要检查变量是否有值。如何检查变量是否在SQL Server 2008存储过程中有值
declare @name varchar(20)
set @name = (SELECT Product_Name
FROM tb_new_product_Name_id
WHERE Product_Name = @productName)
if (@name) // here I need to check it
怎么办?谢谢
答
试试这个
if (@name is null or @value = '') //it will indicate whether it contains a value or not
答
IS NOT NULL
由于NULL会指示缺少值。
答
一个未初始化的变量总是有空值。您可以使用IS NOT NULL检查..
答
IF EXISTS(SELECT * FROM tb_new_product_Name_id
where [email protected])
BEGIN
--Do something because a row existed with that name
END
我们也许可以用简化,以进一步协助你的代码,如果你告诉我们更多关于你打算做的事情,确认tb_new_product_Name_id
中存在一行。它看起来像你正在编写非常程序化的代码 - 首先我会做X,然后我会做Y,然后我会做Z等等.SQL擅长作为一种语言,你告诉它“做什么” - 用于你想要计算的整个数据集 - 而不是“怎么做”逐步逐行地进行。
答
您可以检查是否为空使用IS NULL
如下;
DECLARE @name VARCHAR(20)
SET @name = (SELECT Product_Name FROM tb_new_product_Name_id where [email protected])
IF @name IS NULL -- # Here is where you check it
BEGIN
-- # Handle null @name
END
ELSE
BEGIN
-- # @name has value
END
这我怎么会做,但如果你是对空检查的话,我会去为Demien_The_Unbeliever建议只声明@name
变量。使用EXISTS
你甚至都不需要@name
变量
答
最近遇到在那里没有值的字段正在与为null检查的情况下,不为空,但不工作,并在调试中发现,如果没有值,则该油田得到一个0.因此,检查值=''或值= 0或值为空,其中三个将检查它是否为空。
对于我们的眼睛来说,它甚至不用于'NULL'检查 - 它们在'SELECT'子句中选择相同的列,这也是WHERE子句中的过滤器,这纯粹是存在检查。 –
@Damien_The_Unbeliever好点,我总是错过了。除非它是'NULL',否则; '@ name'必须等于'@ productName'。那么'@名称'是一个不必要的临时变量。 –