I would not either. We can agree to agree. But clarity requires this. It is like "the" in English.
________________________________________ From: sqlite-users-boun...@sqlite.org [sqlite-users-boun...@sqlite.org] on behalf of Igor Tandetnik [i...@tandetnik.org] Sent: Thursday, August 22, 2013 9:37 PM To: sqlite-users@sqlite.org Subject: Re: [sqlite] BETWEEN and explicit collation assignment 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 _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users