我有一個sql服務器表,其中有一個int列,名爲[type],它可以爲空。我有以下存儲過程獲取類型作爲輸入:其中在基於輸入參數的TSQL條件
@Jobtype VARCHAR(50) = '',
@Language INT
AS
BEGIN
SELECT [TabId]
,CASE
WHEN @Language = 2 THEN [TabNameTextLang2]
ELSE [TabNameTextLang1]
END AS TabName
,CASE
WHEN @Language = 2 THEN [PageTitleLang2]
ELSE [PageTitleLang1]
END AS PageTitle
,[TabLink]
,[Type]
,[Priority]
,[DutyStationId]
,[DateCreated]
,[DateModified]
,[Deleted]
FROM dbo.hr_Tabs
WHERE Deleted = 0 AND
((@Jobtype = '' and [Type] is null) or ([Type] = CASt(@Jobtype as int)))
END
此表有一行,其中類型爲空。我希望當我將@jobtype作爲''傳遞時,那麼只有該行被選中,否則行將按其類型顯示。但是,當我試圖通過上面的存儲過程的參數,如
exec myproce '', 1
我得到的所有記錄
請提出如何篩選基於類型的記錄在我的情況
你得到所有的行,或只是所有的行'類型'爲0? CAST(''as int)'產生一個0,所以條件的第二部分可能是真的。 –
類型爲0或null的所有行 – DotnetSparrow