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



我试图选择所有的值,有一个名字以字母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的结果,字符串无序。

最新更新