mysql - 在 MySQL 中,'+' 运算符在布尔表达式的上下文中做什么?
问题描述
例如:
IF (SELECT ((new.fieldA IS NULL) + (new.fieldB IS NULL) + (new.fieldC IS NULL)) <> 2)
THEN
do some stuff
END IF;
我从 PostgreSQL 来到 MySQL。我遇到了这种语法(在 select 语句中),并且很难弄清楚“+”运算符到底在做什么。
谢谢
解决方案
在这种情况下,布尔表达式将被视为整数,0 代表假,1 代表真。然后,您的选择:
SELECT ((new.fieldA IS NULL) + (new.fieldB IS NULL) + (new.fieldC IS NULL)) <> 2
如果三个 A、B、C 字段中只有一个不为空,其他两个为空,则为真。如果三个都为空,所有都不为空,或者两个不为空,则条件为假。
推荐阅读
- c# - 在更新第 2,3..n 页上的记录后,具有分页和保留同一页面的 MVC crud 操作
- java - Login MVP with retrofit
- asp.net - Devexpress 复选框不起作用
- python - 如何在 Windows 上执行此 conda 操作
- tsql - 为什么参数@query_result_separator 不起作用
- python - 在 TensorFlow 中,如何使用索引创建条件?
- javascript - 使用socket.io(NodeJs)检测客户端是否与网络断开连接
- javascript - 如何获取进程nodejs的本地范围内的所有变量
- python - python 中的 a,b = b,a 与 C++ 中的 std::swap()
- java - 如何使用 Jackson 将 JSON 的一部分作为纯文本获取