2011-02-10 21 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