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

时间:2014-02-25 07:42:25

标签: sql sql-server

我需要检查一个变量是否有值。

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 

怎么做?感谢

6 个答案:

答案 0 :(得分:5)

直接使用IF代替EXISTS

IF EXISTS(SELECT * FROM tb_new_product_Name_id 
        where Product_Name=@productName)
BEGIN
    --Do something because a row existed with that name
END

如果您在tb_new_product_Name_id确认了一行之后告诉了我们您计划做的事情,我们可以进一步协助简化您的代码。看起来你正在编写非常程序化的代码 - 首先我会做X,然后我会做Y,然后我会做Z等等.SQL擅长作为一种语言,你告诉它“做什么” - 对于你想要计算的整个数据集 - 而不是一步一步地按行方式“如何做”。

答案 1 :(得分:4)

IS NOT NULL

因为NULL表示没有值。

答案 2 :(得分:4)

试试这个

if (@name is null or @value = '') //it will indicate whether it contains a value or not

答案 3 :(得分:3)

您可以使用IS NULL检查是否为null,如下所示;

DECLARE @name VARCHAR(20)

SET @name = (SELECT Product_Name FROM tb_new_product_Name_id where Product_Name=@productName)

IF @name IS NULL -- # Here is where you check it
BEGIN
    -- # Handle null @name
END 
ELSE
BEGIN
    -- # @name has value
END

这是我怎么做的,但是如果你只为空检查声明@name变量那么我会按Demien_The_Unbeliever建议。使用EXISTS您甚至不需要@name变量

答案 4 :(得分:1)

未启动的变量始终具有空值。您可以使用IS NOT NULL来检查..

答案 5 :(得分:0)

Recently encountered a situation where a field with no values was being checked with is null, is not null but was not working and on debugging found if no value then the field was getting a 0. So checking for value = '' or value = 0 or value is null, one of the three would check if its empty.