Informix set DB_LOCALE to en_us.utf8, the matches '[a-z]' got the wrong results.
I tested the Informix version 11.50, 11.70, 12.10, 14.10, all had this BUG.
Below is the test case:
export DB_LOCALE=en_us.utf8
export CLIENT_LOCALE=en_us.utf8
export GL_USEGLU=1
on14fc8:/tmp$ dbaccess -e - <<EOF
> create database enutf8 with log;
> create table test1 (id int, tsflag char(3), name char(30));
> insert into test1 values(1,'N','user01');
> insert into test1 values(2,'n','user02');
> insert into test1 values(3,'Y','user03');
> insert into test1 values(4,'y','user04');
> select * from test1 where tsflag matches '[A-Z]';
> select * from test1 where tsflag matches '[a-z]';
> EOF
create database enutf8 with log;
Database created.
create table test1 (id int, tsflag char(3), name char(30));
Table created.
insert into test1 values(1,'N','user01');
1 row(s) inserted.
insert into test1 values(2,'n','user02');
1 row(s) inserted.
insert into test1 values(3,'Y','user03');
1 row(s) inserted.
insert into test1 values(4,'y','user04');
1 row(s) inserted.
select * from test1 where tsflag matches '[A-Z]';
id tsflag name
1 N user01
2 n user02
3 Y user03
4 y user04
4 row(s) retrieved.
select * from test1 where tsflag matches '[a-z]';
id tsflag name
1 N user01
2 n user02
3 Y user03
4 y user04
4 row(s) retrieved.
----------
When I executed the above SQL at en_us.8859-1 DB_LOCALE DB, the result was correct. Below is the results:
export DB_LOCALE=en_us.8859-1
export CLIENT_LOCALE=en_us.8859-1
unset GL_USEGLU
on14fc8:/tmp$ dbaccess -e - <<EOF
> create database enusdb with log;
> create table test1 (id int, tsflag char(3), name char(30));
> insert into test1 values(1,'N','user01');
> insert into test1 values(2,'n','user02');
> insert into test1 values(3,'Y','user03');
> insert into test1 values(4,'y','user04');
> select * from test1 where tsflag matches '[A-Z]';
> select * from test1 where tsflag matches '[a-z]';
> EOF
create database enusdb with log;
Database created.
create table test1 (id int, tsflag char(3), name char(30));
Table created.
insert into test1 values(1,'N','user01');
1 row(s) inserted.
insert into test1 values(2,'n','user02');
1 row(s) inserted.
insert into test1 values(3,'Y','user03');
1 row(s) inserted.
insert into test1 values(4,'y','user04');
1 row(s) inserted.
select * from test1 where tsflag matches '[A-Z]';
id tsflag name
1 N user01
3 Y user03
2 row(s) retrieved.
select * from test1 where tsflag matches '[a-z]';
id tsflag name
2 n user02
4 y user04
2 row(s) retrieved.
------------------------------
Philip Yeh
------------------------------
#Informix