I was not aware of such!!! Thanks! LS 2013/12/5 Hick Gunter <h...@scigames.at>
> CAST supplies an affinity to the operand, which forces the comparison to > be made with affinity. And since the constants transform into each other, > the comparison succeeds. > > explain SELECT CAST(123 AS INT)='123'; > addr opcode p1 p2 p3 p4 p5 comment > ---- ------------- ---- ---- ---- ------------- -- ------------- > 0 Trace 0 0 0 00 NULL > 1 Goto 0 8 0 00 NULL > 2 Integer 123 2 0 00 NULL > 3 ToInt 2 0 0 00 NULL > 4 String8 0 3 0 123 00 NULL > 5 Eq 3 1 2 74 NULL <== integer > affinity, store result > 6 ResultRow 1 1 0 00 NULL > 7 Halt 0 0 0 00 NULL > 8 Goto 0 2 0 00 NULL > > > explain SELECT 123='123'; > addr opcode p1 p2 p3 p4 p5 comment > ---- ------------- ---- ---- ---- ------------- -- ------------- > 0 Trace 0 0 0 00 NULL > 1 Goto 0 7 0 00 NULL > 2 Integer 123 2 0 00 NULL > 3 String8 0 3 0 123 00 NULL > 4 Eq 3 1 2 72 NULL <== "none" > affinity, store result > 5 ResultRow 1 1 0 00 NULL > 6 Halt 0 0 0 00 NULL > 7 Goto 0 2 0 00 NULL > > explain select cast(123 as text)=123; > addr opcode p1 p2 p3 p4 p5 comment > ---- ------------- ---- ---- ---- ------------- -- ------------- > 0 Trace 0 0 0 00 NULL > 1 Goto 0 8 0 00 NULL > 2 Integer 123 2 0 00 NULL > 3 ToText 2 0 0 00 NULL > 4 Integer 123 3 0 00 NULL > 5 Eq 3 1 2 71 NULL <== text > affinity, store result > 6 ResultRow 1 1 0 00 NULL > 7 Halt 0 0 0 00 NULL > 8 Goto 0 2 0 00 NULL > > -----Ursprüngliche Nachricht----- > Von: Luís Simão [mailto:l...@portugalmail.com] > Gesendet: Donnerstag, 05. Dezember 2013 12:34 > An: General Discussion of SQLite Database > Betreff: [sqlite] Strange comparison with CAST behavior > > I found this strange behavior in SQLite: > > While testing whether SQLite performs cast before comparison or just > return 0, I entered following: > > SELECT CAST(123 AS INT)='123'; > > And for my surprise, it returned 1!!! > > However, my previous tests checked that numeric/text comparisons always > returned 0. > Check: > > SELECT 123=123.0; // 1 > SELECT 123='123'; // 0 > SELECT CAST(123 AS TEXT)='123'; // 1 > SELECT CAST(123 AS NUMERIC)='123'; // 1 ??? > > How is this possible? > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > > > -------------------------------------------------------------------------- > Gunter Hick > Software Engineer > Scientific Games International GmbH > Klitschgasse 2 – 4, A - 1130 Vienna, Austria > FN 157284 a, HG Wien > Tel: +43 1 80100 0 > E-Mail: h...@scigames.at > > This e-mail is confidential and may well also be legally privileged. If > you have received it in error, you are on notice as to its status and > accordingly please notify us immediately by reply e-mail and then delete > this message from your system. Please do not copy it or use it for any > purposes, or disclose its contents to any person as to do so could be a > breach of confidence. Thank you for your cooperation. > _______________________________________________ > 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