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

Reply via email to