2011-02-10 24 views
1

這是一個續集我的(其他的)愚蠢的問題,我問今天T-Sql喜歡兩難 - 選擇行w.r.t.關鍵字

我在SQL Server中的存儲過程,其需要根據關鍵字來選擇某些行,如:

@Key varchar(5) = 'a' 

select * From Products where ProductName like 'a%' 

目前,@Key可以從A從所有其他正常字符包含值等0-9XYZ分開,BW

所以當@KeyXYZ它需要選擇所有從字母X,Y, Z開始的產品,當它的0-9它應該選擇任何以數字開頭的產品。

所以這個現在我有什麼是:

WHERE 
(@Key='xyz' and (name like 'x%' or name like 'y%' or name like 'z%')) 
or name LIKE @Keyword +'%' 

現在,讓我們把proc皮卡數字,我應該做類似XYZ的東西,但包括name like '0%' or name like '1%'十倍。

當然,應該有更好的方法讓SQL Server從小數點開始選擇名稱?

這是唯一的方法嗎?

謝謝。

對不起,如果我問的問題太多了!

回答

2

LIKE語句還允許通配符在單個字符,如

SELECT... 
WHERE foo LIKE '[0-9]%' 

會返回foo以數字開頭的值。其中,foo以元音開頭

同樣,

SELECT... 
WHERE foo LIKE '[aeiou]%' 

將返回值。

檢查documentation for LIKE - 有一些更多的招數......

+0

非常感謝! ¬_¬ – Alexander 2011-02-10 13:12:34

2

您可以使用

name like '[0-9]%' 

您的其他情況下,你可以使用

name like '[x-z]%' 

name like '[xyz]%' 

在不區分大小寫的排序規則,這些最後2是等價的。不過,他們不是在一個區分大小寫的排序規則相同([x-z]%將匹配「酸奶」,而[xyz]%不會)

+0

哈哈哈!非常感謝!我在嘲笑這樣的事實,顯然,我還有很多需要學習的東西! – Alexander 2011-02-10 13:12:08