Sql-Server-2008

如何顯示查詢的 NULL 結果?

  • May 8, 2020

我正在嘗試創建一個帶有搜尋過濾器的過程。

如果參數為“NULL”,則參數值將是列值;

這是我的問題:當我的參數和列值為 NULL 時。

因為這個,我沒有結果。

我知道查詢:“COLUMN_NAME IS NULL”即使值為 NULL,也會返回結果,但我不知道如何實現。

我試圖用“CASE”來做到這一點,但沒有成功。

CREATE PROCEDURE SEARCH_QUERYS
       @ID   int,
       @LIVE bit,
       @DATA datetime
AS
BEGIN
       SELECT * FROM TB_SEARCH
       WHERE 
       ID = ISNULL(@ID,ID) AND
       LIVE = ISNULL(@LIVE,LIVE) AND
       DATA = ISNULL(@DATA,DATA)
END
ALTER PROCEDURE dbo.SEARCH_QUERYS -- always use schema prefix!
       @ID   int,
       @LIVE bit,
       @DATA datetime
AS
BEGIN
       SELECT ID, LIVE, DATA --, ... don't use SELECT *!
       FROM dbo.TB_SEARCH -- always use schema prefix!
       WHERE 
       (ID = @ID OR @ID IS NULL)
       AND (LIVE = @LIVE OR @LIVE IS NULL)
       AND (DATA = @DATA OR @DATA IS NULL); -- always use semi-colons!
END
GO

在某些情況下,儘管您最好動態建構查詢。

參考:

引用自:https://dba.stackexchange.com/questions/51397