mysql> SELECT '21b' = 0, CAST('21b' AS SIGNED); +-----------+-----------------------+ | '21b' = 0 | CAST('21b' AS SIGNED) | +-----------+-----------------------+ | 0 | 21 | +-----------+-----------------------+ 1 row in set (0.00 sec)
However, if the string value begins with a non-digit, then it is coerced or cast to zero:
mysql> SELECT 'b21' = 0, CAST('b21' AS SIGNED); +-----------+-----------------------+ | 'b21' = 0 | CAST('b21' AS SIGNED) | +-----------+-----------------------+ | 1 | 0 | +-----------+-----------------------+ 1 row in set (0.00 sec)
It is still true that Przemyslaw was assuming that a non-empty string would always evaluate as TRUE, and this isn't necessarily the case. So the best strategy is to compare directly with the empty string, as already discussed.
Thanks to Paul DuBois for reminding me of this. My apologies to anyone whom I might have misled.
-- Jon Stephens, Technical Writer MySQL AB www.mysql.com Office: +61 (07) 3388 2228 Are you MySQL certified? www.mysql.com/certification
-- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]