【问题标题】:Select From Range of Names从名称范围中选择
【发布时间】:2013-08-19 22:12:09
【问题描述】:

例如我在数据库中有这个名字

LastName
Amy
Betty
Camy
Daisy
David
Johnson

这仅适用于从 Amy 到 David 的选择:

select * from Student
where LastName >= 'A' and LastName <= char(ascii('D') + 1)
order by LastName  

如果我只想选择从 Amy 到 Daisy,我该怎么做?

【问题讨论】:

    标签: sql-server tsql select filter sql-server-2008-r2


    【解决方案1】:

    (我可能遗漏了一些您忘记在问题中包含的内容,但是)为什么要让生活变得更艰难:

    SELECT *
    FROM Student
    WHERE LastName BETWEEN 'Amy' AND 'Daisy'
    ORDER BY LastName
    

    SQL Fiddle


    要回复评论,您可以这样做的一种方法是:

    SELECT *
    FROM Student
    WHERE LastName >= 'Amy'
    AND (LastName <= 'Dai' OR LastName LIKE 'Dai%')
    

    SQL Fiddle 证明这仍应导致单个索引查找。

    【讨论】:

    • 我需要的是例如用户只输入'Dai'。应该包括雏菊
    • @KarlxSwanovski 好的,我为您添加了第二个选项
    • 正是我需要的。谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多