如何检查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