我试图选择所有的值,有一个名字以字母a-d开头,但是当我这样做
select * from tblprofile where firstname between 'a' and 'd'
我得到了从a到c的所有值,不包括d,我如何确保它包括d?
包含
你不会得到你想要的结果,因为任何以'd'开头且长度大于1个字符的字符串都大于'd'。例如:'da' > 'd'
。因此,您的查询将返回所有以'a', 'b', 'c'开头的值,以及值'd'。
要得到您想要的结果,请使用
select * from tblprofile where firstname >= 'a' and firstname < 'e'
尝试使用Left()函数:
SELECT *
FROM tblprofile
WHERE LEFT(FirstName,1) between 'a' and 'd'
另一种方法是使用这样的联合选择
SELECT * FROM tblprofile WHERE LEFT(FirstName,1) = 'a'联盟SELECT * FROM tblprofile WHERE LEFT(FirstName,1) = 'b'联盟SELECT * FROM tblprofile WHERE LEFT(FirstName,1) = 'c'联盟SELECT * FROM tblprofile WHERE LEFT(FirstName,1) = 'z'
使用联合的好处是,如果你需要得到A, K和X的结果,字符串无序。