选择一系列字母

Squ*_*nge 8 sql sql-server

如何选择名称以"A"开头的行,直到名称以"D"开头?按字母顺序排序?像LIKE和= <>的组合?

样本表:

ID       Name
4001     Spartakol
4002     Tabunjong
4003     Mabini
4004     Carlos
4005     Antonio
4006     Babsy
4007     Jose
4008     David
4009     Cruz
Run Code Online (Sandbox Code Playgroud)

样本输出:

4005     Antonio
4006     Babsy
4004     Carlos
4009     Cruz
4008     David
Run Code Online (Sandbox Code Playgroud)

名称以'Cr'开头,直到名称以'D'开头

样本输出:

4009     Cruz
4008     David
Run Code Online (Sandbox Code Playgroud)

Guf*_*ffa 15

'A'最多选择名称,但不包括'E':

select ID, Name
from SampleTable
where Name >= 'A' and Name < 'E'
order by Name
Run Code Online (Sandbox Code Playgroud)

由于这是一个简单的比较,如果您有一个索引,它可以使用索引.

  • @SquarePonge:因为''D'<'David',所以`Name> ='A'和Name <='D'`将不包括任何以D开头的名字(除非有些名字只是D).使用`Name <'E'`包括以D开头的所有名称,但没有以E开头的名称. (2认同)
  • @SquarePonge:`char(ascii('D') + 1)` (2认同)
  • 如果我想从 x 到 z 包括在内进行选择怎么办?'char(ascii('z') + 1)' 返回 '{' 并且该语句没有选择任何内容! (2认同)

Pat*_*rez 6

Guffa的答案可能是最有效的。为了完整起见,您还可以使用

LIKE '[a-d]%'
Run Code Online (Sandbox Code Playgroud)

根据您的数据库COLLATIONLIKE是否区分大小写。

  • @PeterCordes:问题被标记为 SQL Server (2认同)