我想显示从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开头的记录。
答案 0 :(得分:3)
您想要的查询是:
select *
from emp2
where substr(name, 1, 1) between '0' and '9';
应用于字符串时,您会误解between
。表达式:
name between '+1' and '10'
正在查找以'+'
到'1'
范围内的字符开头的名称。对于数字,这将是以0
和1
开头的数字。
表达式:
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
列上的索引(如果存在)。