mysql - 条件语句中的字符串解释

标签 mysql string

在条件语句中使用字符串时,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 Evaluationconvert本手册的部分内容可能有用。

<小时/>

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

关于mysql - 条件语句中的字符串解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19194349/

相关文章:

linux - 使用 sed 替换最后一次出现

java - 添加 fragment ?

Java:根据匹配的字符串/模式对数组进行排序

mysqlbinarylog - TABLE_MAP_EVENT 中 table_id 的唯一性

mysql - 停止 MAMP MySQL

python - 大数据集的 Django 分页太慢

php - 从 MySQL 查询结果中只检索一列

PHP MySql 更新否则插入错误 "Warning: mysql_result()"

java - 是否可以用java在一行中完成这个正则表达式操作?

c++ - 首先创建字符串然后通过 move 语义将其添加到 vector 或在 vector 中创建元素是否有效?