The constant '1' (of storage class TEXT) has no affinity, neither has the constant 1 (of storage class INTEGER), nor the result of an expression - with documented exceptions, notably CAST(<value> AS <type>).
Consider: 1 = '1' ------- 0 (1=1) = '1' ----------- 0 cast((1=1) as integer) = '1' ---------------------------- 1 cast((1=1) as text) = '1' ------------------------- 1 (1=1) = cast('1' as integer) ---------------------------- 1 (1=1) = cast('1' as text) ------------------------- 1 The first and last CAST() examples are particularly interesting. The CAST doesn't change it's operand's storage class (argument is already in the target storage class); it only sets an affinity, so the subsequent comparison is prompted to convert the result on the *other* side of the equality operator. -----Ursprüngliche Nachricht----- Von: sqlite-users [mailto:sqlite-users-boun...@mailinglists.sqlite.org] Im Auftrag von Jeffrey Mattox Gesendet: Donnerstag, 26. Jänner 2017 11:03 An: SQLite mailing list <sqlite-users@mailinglists.sqlite.org> Betreff: [sqlite] text/numeric comparison confusion When used in a SELECT, I expect this comparison to be true (and it is): ( cast('25' as INTEGER) = 25 ) <--- true But, why is this false: ( '25' = 25 ) <--- false? and this is true: ( cast(25 as TEXT) = 25 ) <--- true So, being that second comparison is false (why?), then why isn't the third comparison also false? _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users ___________________________________________ Gunter Hick Software Engineer Scientific Games International GmbH FN 157284 a, HG Wien Klitschgasse 2-4, A-1130 Vienna, Austria Tel: +43 1 80100 0 E-Mail: h...@scigames.at This communication (including any attachments) is intended for the use of the intended recipient(s) only and may contain information that is confidential, privileged or legally protected. Any unauthorized use or dissemination of this communication is strictly prohibited. If you have received this communication in error, please immediately notify the sender by return e-mail message and delete all copies of the original communication. Thank you for your cooperation. _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users