我需要檢查變量是否有值。如何檢查變量是否在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
怎麼辦?謝謝
我需要檢查變量是否有值。如何檢查變量是否在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'。那麼'@名稱'是一個不必要的臨時變量。 –