9

如何选择名称以“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
4

8 回答 8

21

'A'最多(但不包括)中选择名称'E'

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

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

于 2013-07-07T15:21:39.880 回答
7

Guffa 的回答可能是最有效的。要完整,您还可以使用

LIKE '[a-d]%'

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

于 2013-07-07T15:32:33.147 回答
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;
于 2013-07-07T15:21:13.433 回答
1

select id, name from Your Table where LOWER(LEFT(name, 1)) between 'a' and 'd'; 按名称排序;

于 2013-07-07T15:22:40.080 回答
1

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

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

例子:

想象一下,如果您有一个表名 student,其中包含三列(ID、Name、Address)。

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

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

=======================
OUTPUT
____________
**ID    Name**
2     Amal
____________
于 2018-10-18T03:25:45.100 回答
1

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

SELECT * FROM table_name WHERE name BETWEEN "A" AND "E" ORDER BY name
于 2019-12-31T16:33:58.847 回答
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;
于 2019-12-31T05:33:16.583 回答
-1
select *
from Foo
where substring(name, 1, 1) between 'a' and 'd'
order by name
于 2013-07-07T15:21:50.297 回答