如何选择名称以“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
答案 0 :(得分:15)
从'A'
开始选择名称,但不包括'E'
:
select ID, Name
from SampleTable
where Name >= 'A' and Name < 'E'
order by Name
由于这是一个简单的比较,如果您有一个索引,它可以使用索引。
答案 1 :(得分:4)
Guffa的回答可能是效率最高的。要完成,您还可以使用
LIKE '[a-d]%'
根据您的数据库COLLATION
,LIKE
可能区分大小写。
答案 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]%'
示例:
想象一下,如果您有一个具有三列(如(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