我想显示从0到9开始的名称

时间:2013-08-29 14:10:56

标签: sql database oracle

我想显示从0到9开头的名字。我不要使用reg_exp和类似的函数。

我的数据:

select * from emp2;
15326
25371
35371
48615
59718
69718
79718
89718
99718
05326
15326
25371
35371
48615
59718
69718
79718
89718
99718
a19716
b09414
d%5034
!5033
**5031
89718
39718
05326
a19716
b09414
d%5034
!5033
**5031
89718
39718

我使用以下查询来获取记录。

select * from emp2 where name between '0' and '9';

15326
25371
35371
48615
59718
69718
79718
89718
05326
15326
25371
35371
48615
59718
69718
79718
89718
89718
39718
05326
89718
39718

结果:当我从0到8获取值时.. 9没有提取,为什么?

我尝试了一些查询。

select * from emp2 where name between '+1' and '10';
05326
05326

select * from emp2 where name between '9' and '0';

no rows selected

为什么此声明不提取任何记录

我的预期结果:我想获取名称以0到9开头的记录。

3 个答案:

答案 0 :(得分:3)

您想要的查询是:

select *
from emp2
where substr(name, 1, 1) between '0' and '9';

应用于字符串时,您会误解between。表达式:

name between '+1' and '10'

正在查找以'+''1'范围内的字符开头的名称。对于数字,这将是以01开头的数字。

表达式:

name between '9' and '0'

是向后的,因为中间的值需要按顺序排列。

相关表达式:

name between '0' and '9'

接近了。但是当有另一个数字时,它会遗漏以9开头的内容。

答案 1 :(得分:2)

SELECT * 
FROM   emp2 
WHERE  SUBSTR(name,1,1)  BETWEEN 0 AND 9

答案 2 :(得分:1)

select * from emp2 where name >= '0' and name < ':'

此语句将使用name列上的索引(如果存在)。