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

如何检查SQL Server 2008存储过程中的变量是否有值,sql,sql-server,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 怎么做?谢谢不为空 As NULL表示缺少值。未初始化的变量中始终包含NULL值。您

我需要检查变量是否有值

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 
怎么做?谢谢

不为空


As NULL表示缺少值。

未初始化的变量中始终包含NULL值。您可以使用IS NOT NULL来检查..

试试这个

if (@name is null or @value = '') //it will indicate whether it contains a value or not
只需直接执行以下操作:


如果您在确认
tb\u new\u product\u Name\u id
中存在一行后,告诉我们您计划做什么,我们可能能够进一步帮助您简化代码。看起来您正在编写非常程序化的代码——首先我要做X,然后我要做Y,然后我要做Z,等等。SQL作为一种语言非常出色,您可以告诉它“要做什么”——对于您要计算的整个数据集——而不是一步一步、一行一行地“如何做”。

您可以使用
检查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
变量,那么我会按照建议执行。使用
EXISTS
您甚至不需要
@name
变量

最近遇到了这样一种情况:没有值的字段被检查为空、不为空但不起作用,调试时发现如果没有值,则该字段得到0。所以检查value=''或value=0或value为null,三者中的一个会检查它是否为空。

甚至不检查
null
检查-他们在
SELECT
子句中选择了相同的列,这也是
WHERE
子句中的过滤器-在我看来,这纯粹是一种生存检查。@Damien_不信者很好的观点,我完全错过了。除非它是
NULL
then<代码>@name
必须等于
@productName
。那么,
@name
是一个不必要的临时变量。这里的
@value
指的是什么?我在OP的帖子中没有看到
@value
变量
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