如何检查变量是否在SQL Server 2008存储过程中有值

如何检查变量是否在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代替:

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变量

+2

对于我们的眼睛来说,它甚至不用于'NULL'检查 - 它们在'SELECT'子句中选择相同的列,这也是WHERE子句中的过滤器,这纯粹是存在检查。 –

+0

@Damien_The_Unbeliever好点,我总是错过了。除非它是'NULL',否则; '@ name'必须等于'@ productName'。那么'@名称'是一个不必要的临时变量。 –

最近遇到在那里没有值的字段正在与为null检查的情况下,不为空,但不工作,并在调试中发现,如果没有值,则该油田得到一个0.因此,检查值=''或值= 0或值为空,其中三个将检查它是否为空。