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 上有索引(尽管您选择的行太多以至于索引可能不相关)。