2017-07-28 63 views
0

我有一個SQL Server存儲過程SQL語句中選擇使用WHERE子句這樣的:SQL - 我如何使用基於參數

Select (fields) 
From Table 
Where Testname like @SearchLetter + '%' 

我需要做的檢查參數@SearchLetter如果它是「#」,我需要使參數選擇記錄,字段Testname以數字字段開始(0-9)

我已經嘗試了幾件事情(如果/選擇等),但我可以似乎沒有得到我需要的東西。

有人知道我該怎麼做?

+0

添加樣本數據和預期的結果.. –

回答

1

嘗試

where Testname like case @SearchLetter 
    when '#' then '[0-9]' + '%' 
    else @Searchletter + '%' end 
0

最簡單的方法是

where left(@SearchLetter, 1) between '0' and '9 
+0

這是測試變量的第一個字母。他們想要根據變量值測試列的第一個字母。 –

1

您可以使用

Where Testname like REPLACE(@SearchLetter, '#', '[0-9]') + '%' 

假設字符串總是一個字符(或你總是希望這個換人的地方散降至發生)否則使用一個CASE聲明來檢查確切的平等。

Where Testname like 
CASE WHEN @SearchLetter = '#' 
    THEN '[0-9]' 
    ELSE @SearchLetter 
END + '%'