选择一系列字母

时间:2013-07-07 15:13:36

标签: 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

示例输出:

4005     Antonio
4006     Babsy
4004     Carlos
4009     Cruz
4008     David

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

示例输出:

4009     Cruz
4008     David

8 个答案:

答案 0 :(得分:15)

'A'开始选择名称,但不包括'E'

select ID, Name
from SampleTable
where Name >= 'A' and Name < 'E'
order by Name

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

答案 1 :(得分:4)

Guffa的回答可能是效率最高的。要完成,您还可以使用

LIKE '[a-d]%'

根据您的数据库COLLATIONLIKE可能区分大小写。

答案 2 :(得分:3)

select id, name
from table
where LOWER(LEFT(name, 1)) between 'a' and 'd'
order by name;

如果您想匹配多个字符,请使用

select id, name
  from table
 where name >= 'Cr' 
   and (name < 'D' OR name like 'D%')
 order by name;

答案 3 :(得分:0)

选择id,name 从你的表 其中LOWER(左(名称,1))在'a'和'd'之间; 按名称排序;

答案 4 :(得分:0)

如果您需要按特定列的首字母字母范围选择记录。

select *output record*
from *tableName*
WHERE name LIKE '[X-Z]%'
  • 范围是X到Z,'%'指定名称的其余部分可以是任何内容。

示例:

想象一下,如果您有一个具有三列(如(ID,名称,地址)的表名Student)。

___________________________
**ID    Name    Address**
1     Kasun   Colombo
2     Amal    Galle
___________________________

select ID,Name
from Student
WHERE name LIKE '[A-E]%'

=======================
OUTPUT
____________
**ID    Name**
2     Amal
____________

答案 5 :(得分:0)

这是使用BETWEEN,LIKE和子查询组合的另一种方法。

SELECT * FROM table_name 
WHERE name BETWEEN 
(SELECT name FROM table_name 
WHERE name LIKE 'A%' 
ORDER BY name ASC LIMIT 0,1) 
AND 
(SELECT name FROM table_name 
WHERE name LIKE 'D%' 
ORDER BY name DESC LIMIT 0,1) 
ORDER BY name ASC;

答案 6 :(得分:0)

这是另一个更简单的解决方案

SELECT * FROM table_name WHERE name BETWEEN "A" AND "E" ORDER BY name

答案 7 :(得分:-2)

select *
from Foo
where substring(name, 1, 1) between 'a' and 'd'
order by name