我正在尝试选择名字以字母a-d开头的所有值,但是当我这样做时
select * from tblprofile where firstname between 'a' and 'd'
我从a到c得到所有值,不包括d,我怎样才能确定它包含d?
答案 0 :(得分:7)
包容性。
你没有得到你想要的结果,因为任何字符串都以' d'开头。并且超过1个字符大于' d'。例如'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表示结果,那么字符串将不按顺序排列。