On 08/17/2017 07:07 AM, Jens Alfke wrote:
On Aug 16, 2017, at 4:55 PM, Richard Hipp <[email protected]> wrote:Remember: COLLATE binds more tightly than ==. So 'xyz' = 'XYZ' COLLATE nocase gets parsed out as 'xyz' = ('XYZ' COLLATE nocase) And that expression has a different meaning from your ('xyz' = 'XYZ') COLLATE nocaseOh, so collation is actually an attribute of a string value, that gets applied during comparisons involving that value? That’s very different from my mental model! In that case, what is the meaning of ('foo' COLLATE binary) = ('FOO' COLLATE nocase) i.e. which of the two competing collations does the = operator decide to use? And is the collation attribute passed around with the string value, through intervening expressions? I.e. is this expression true? 'FOO' = ifnull(null, 'foo' COLLATE nocase)
"binary" and "yes". Full rules explained here: https://sqlite.org/datatype3.html#collating_sequences Dan. _______________________________________________ sqlite-users mailing list [email protected] http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

