db2 在查询 char 列之间
db2 between query for char columns
我有一个场景 table 如下
Table Name:Employee
id EmpName(char 4) -always 4 chars only
1 ARUN
2 BALA
3 LOKI
我想要一个 Db2 查询,该查询应该为我提供姓名以 A 到 D 开头的员工范围。这意味着应该显示姓名以 A、B、C 和 D 开头的员工
我试过这个查询
select * from employee where empname between 'A000' and 'DZZZ'
无法正常工作
试试这个
select empname from employee where empname like 'A%' or
empname like 'B%' or empname like 'C%' or
empname like 'D%'
order by empname
也试试这个
select empname from employee where empname
REGEXP'^[ABCD]'
切换到 'AAAA' 作为起始值。
where empname between 'AAAA' and 'DZZZ'
如果将 empname 编入索引,性能会更好。
ANSI SQL 兼容且可移植,应该可以在 DB2 和 Postgresql 上正常工作。
编辑:
如果短于4个字符的empnames将被存储,您可以更改为:
where empname between 'A' and 'DZZZ'
(不会错过员工 'A'。)
使用以下版本:
select e.*
from employee e
where e.empname >= 'A' and
e.empname < 'E'
这完全符合您的要求 -- 并且不对第二个字符做任何假设。此外,它是索引安全的,如果您在 empname
上有索引(尽管您选择的行太多以至于索引可能不相关)。
我有一个场景 table 如下
Table Name:Employee
id EmpName(char 4) -always 4 chars only
1 ARUN
2 BALA
3 LOKI
我想要一个 Db2 查询,该查询应该为我提供姓名以 A 到 D 开头的员工范围。这意味着应该显示姓名以 A、B、C 和 D 开头的员工
我试过这个查询
select * from employee where empname between 'A000' and 'DZZZ'
无法正常工作
试试这个
select empname from employee where empname like 'A%' or
empname like 'B%' or empname like 'C%' or
empname like 'D%'
order by empname
也试试这个
select empname from employee where empname
REGEXP'^[ABCD]'
切换到 'AAAA' 作为起始值。
where empname between 'AAAA' and 'DZZZ'
如果将 empname 编入索引,性能会更好。
ANSI SQL 兼容且可移植,应该可以在 DB2 和 Postgresql 上正常工作。
编辑:
如果短于4个字符的empnames将被存储,您可以更改为:
where empname between 'A' and 'DZZZ'
(不会错过员工 'A'。)
使用以下版本:
select e.*
from employee e
where e.empname >= 'A' and
e.empname < 'E'
这完全符合您的要求 -- 并且不对第二个字符做任何假设。此外,它是索引安全的,如果您在 empname
上有索引(尽管您选择的行太多以至于索引可能不相关)。