Hi,
the documentation says (on <http://www.sqlite.org/datatype3.html#collation>):
| The expression "x BETWEEN y and z" is logically equivalent to two
| comparisons "x >= y AND x <= z" and works with respect to collating
| functions as if it were two separate comparisons.
However, this is not true when the first operator has an explicit
collation assignment:
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table t(x);
sqlite> insert into t values('a');
sqlite> insert into t values('A');
sqlite> select * from t where x collate nocase between 'a' and 'b';
a
sqlite> select * from t where x collate nocase >= 'a' and x collate nocase <=
'b';
a
A
It works only on the second and third operators:
sqlite> select * from t where x between 'a' collate nocase and 'b' collate
nocase;
a
A
And adding it to the first operator breaks it again:
sqlite> select * from t where x collate nocase between 'a' collate nocase and
'b' collate nocase;
a
Regards,
Clemens
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users