我有一個T-SQL存儲過程是提供數據的量好一個.NET頁面上的網格....以至於我把選擇的頂部「0-9」的頁面和字母表中的每個字母,以便當用戶單擊該字母時,我想根據以第一個字母開頭的結果篩選結果。假設我們正在使用產品名稱。所以如果用戶點擊「A」,我只希望我的存儲過程返回SUBSTRING(ProductName,1,1)=「A」的結果。利用子和ISNUMERIC T-SQL Case語句
給我帶來了掛了是對以數字開頭的產品名稱。在這種情況下,我希望獲取所有ProductName值,其中ISNUMERIC(SUBSTRING(ProductName,1,1))= 1。我使用一個名爲@FL的輸入參數。 @FL將會是零(我們有很少的產品是以數字開頭的,所以我把它們全部湊在一起)。
當然,還有WHERE SUBSTRING(ProductName,1,1)IN('0','1','2'.....)的替代方案,但即使如此,我從未能夠設計一個CASE語句,它將對一個評估執行an =和對另一個執行一個IN語句。
下面是我在我的PROC我的WHERE子句的情況下部分。它不起作用,但如果僅從僞代碼的角度來看它可能是有價值的。
預先感謝您的任何想法。
AND CASE @FL
WHEN "0" THEN
CASE WHEN @FL = "0" THEN
isnumeric(substring(dbo.AssnCtrl.Name, 1, 1)) = 1
ELSE
SUBSTRING(dbo.AssnCtrl.Name, 1, 1) = @FL
END
END
***我知道,這使用CASE語句是「非標」,但我在網上找到的,認爲它有一些承諾。但試圖使用單個CASE語句產生相同的結果('='附近有錯誤)。
內殼多餘的 - 該ISNUMBERIC就一定會執行,因爲@FL已經測試爲「0」 – 2010-09-10 21:04:31