update set a=2 and b=3 有and 可以执行但是值不对

数据库:MySQL 5.7


image.png
create table tmp_test as 
select 1 as id ,1 as a ,2 as b ;

select * from tmp_test

-- 写错了 却可以执行 且a的值变为0  (正确是用逗号)
update tmp_test
set a = 2 and  b= 3 
where id  = 1
image.png
 SQL 解释器会尝试评估 a = 2 and b = 3 这个表达式 
 使用了 AND 实际上会将其视为一个条件表达式 ,并尝试将其转换为布尔值
 在 SQL 中,布尔值 TRUE 常常会被隐式转换为数值 1,而 FALSE 转换为 0
image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容