On 8/22/2013 9:01 PM, Roman Fleysher wrote:
create table t(x text collate nocase);
insert into t values ('A');
select count(*) from t where x = 'a';

In your opinion, what result should this select statement produce? 1, as
it does now? 0, as Simon's approach seems to imply? Something else?

Since logically it is the operation that needs a modifier, then it should be supplied and 
not derived from the operands. If I put aside backward compatibility and take position of 
purity and clarity to the extreme (because taking extreme positions clarifies thinking), 
then this should fail since no rule to compare is fully specified. The "=" must 
be accompanied by a modifier. Once the modifier is supplied, comparison can proceed and 
index can be identified.

Thus, I would use lengthy version for clarity:

create table t(x text)
create index t(x collate nocase)
create index t(x collate someothercase)
insert into t values ('A');
select count(*) from t where x = 'a' nocase;

Well, I personally would not want to use a DBMS that requires me to do that for every single comparison operator in every single query I use. I suppose we would have to agree to disagree here.
--
Igor Tandetnik

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to