在条件语句中使用字符串时,mysql如何将字符串转换为 bool 值?
select if("192.168.0.0",true,false) // returns 1
select if("-1",true,false) // returns 1
select if("a1",true,false) // returns 0
最佳答案
MySQL 使用 C 风格的 bool 值:0
为 false,任何其他数字为 true。所以,真正的问题是:
How does MySQL cast a string to a number?
答案是它以明显的方式转换字符串,它从左到右,并在不再具有有效数字时停止解析。例如:
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'
在数字或 bool 上下文中为零,因为 'a'
不能是(十进制)数字的一部分。
Type Conversion in Expression Evaluation和 convert
本手册的部分内容可能有用。
PS:不要养成对字符串使用双引号的习惯,MySQL 可以让你摆脱它,但许多数据库不会。单引号用于在 SQL 中引用字符串文字。
关于mysql - 条件语句中的字符串解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19194349/