http://www.sqlite.org/datatype3.html section 3+ When you declare a field as type "bool" it gets assigned NUMERIC type affinity. "A column with NUMERIC affinity may contain values using all five storage classes. When text data is inserted into a NUMERIC column, the storage class of the text is converted to INTEGER or REAL (in order of preference) if such conversion is lossless and reversible. For conversions between TEXT and REAL storage classes, SQLite considers the conversion to be lossless and reversible if the first 15 significant decimal digits of the number are preserved. If the lossless conversion of TEXT to INTEGER or REAL is not possible then the value is stored using the TEXT storage class. No attempt is made to convert NULL or BLOB values."
So with a field declared as "bool" then the text value of '1' gets inserted, it is stored as the integer 1 1) SELECT * FROM TEST WHERE posted = 1; [(‘inv’, 100, 1)] 2) SELECT * FROM TEST WHERE posted = ‘1’; [(‘inv’, 100, 1)] 3) SELECT * FROM TEST WHERE CASE WHEN tran_type = ‘inv’ THEN posted END = 1; [(‘inv’, 100, 1)] 4) SELECT * FROM TEST WHERE CASE WHEN tran_type = ‘inv’ THEN posted END = ‘1’; [] http://www.sqlite.org/datatype3.html section 4.2, 4.3, etc In your case 2, "posted" refers directly to the NUMERIC field and thus maintains NUMERIC affinity, so the text '1' gets converted losslessly to the integer 1 and so the result of the comparison is true. It seems that the CASE expression results in NO AFFINITY as an expression, and does not carry the affinity of "posted" even though it is a direct reference to the field. Therefore the first bullet point in section 4.3 does NOT get applied, and the text '1' does NOT get converted to an integer for the comparison. I am a little confused though why bullet point 2 doesn't get applied then, and the 1 from the case expression isn't treated as text. _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users