条件语句中的字符串解释

时间:2013-10-05 05:28:09

标签: mysql string

在条件语句中使用mysql时,mysql如何将字符串转换为布尔值?

select if("192.168.0.0",true,false) // returns 1
select if("-1",true,false) // returns 1
select if("a1",true,false) // returns 0

1 个答案:

答案 0 :(得分:2)

MySQL使用C风格的布尔值:0为false,其他任何数字都为真。所以,真正的问题是:

  

MySQL如何将字符串转换为数字?

答案就是它以明显的方式转换字符串,它从左向右转换,当它不再具有有效数字时停止解析。例如:

mysql> select '192.168.0.0' + 0, '-1' + 0, 'pancakes11' + 0;
+-------------------+----------+------------------+
| '192.168.0.0' + 0 | '-1' + 0 | 'pancakes11' + 0 |
+-------------------+----------+------------------+
|           192.168 |       -1 |                0 |
+-------------------+----------+------------------+

因此'a1'在数字或布尔上下文中为零,因为'a'不能是(十进制)数字的一部分。

本手册的Type Conversion in Expression Evaluationconvert部分可能有用。


PS:不要养成为字符串使用双引号的习惯,MySQL可以让你逃脱它,但很多数据库都不会。单引号用于在SQL中引用字符串文字。