Microsoft SQL之间的字符语句不包括在内?

时间:2015-10-18 21:10:21

标签: sql sql-server select

我正在尝试选择名字以字母a-d开头的所有值,但是当我这样做时

select * from tblprofile where firstname between 'a' and 'd'

我从a到c得到所有值,不包括d,我怎样才能确定它包含d?

3 个答案:

答案 0 :(得分:7)

包容性。

你没有得到你想要的结果,因为任何字符串都以&#39; d&#39;开头。并且超过1个字符大于&#39; d&#39;。例如'da' > 'd'。 因此,您的查询将返回以&#39; a&#39;,&#39; b&#39;&#39; c&#39;开头的所有值,以及值&#39; d&#39; < / p>

要获得您想要的结果

select * from tblprofile where firstname >= 'a' and firstname < 'e'

答案 1 :(得分:3)

尝试使用Left()函数:

SELECT *
FROM tblprofile
WHERE LEFT(FirstName,1) between 'a' and 'd'

答案 2 :(得分:0)

另一种方法是使用像这样的联合选择

SELECT * FROM tblprofile WHERE LEFT(FirstName,1)=&#39; a&#39; 联盟 SELECT * FROM tblprofile WHERE LEFT(FirstName,1)=&#39; b&#39; 联盟 SELECT * FROM tblprofile WHERE LEFT(FirstName,1)=&#39; c&#39; 联盟 SELECT * FROM tblprofile WHERE LEFT(FirstName,1)=&#39; z&#39;

使用union的优点是,如果您需要使用A,K和X表示结果,那么字符串将不按顺序排列。