Access Update 语句的怪现象
来源:互联网 发布:h股指数基金 知乎 编辑:程序博客网 时间:2024/05/04 19:38
今天在Access上写Update查询的时候一不小心将
update employee set status=1, name = 'sink' where id = 99
写成
update employee set status=1 and name = 'sink' where id = 99
结果status字段被更新为 0,
我大吃一惊,怎么可能是0呢,对于Access不是很熟的我十分不解.
叫来同事,他看了看说是Access把后面的and name = 'sink' 当成布尔语句了,
我茅塞顿开,经过讨论后把我的理解写下来:
这里加上括号有助理解
update employee set status=(1 and (name = 'sink' ) ) where id = 99
由于id为99的行里name 不等于'sink',所以 name = 'sink' 的结果为false ,
而true会被access理解为-1或1(),
(或者说-1或1在这里等同于true),
false则等同于0,(可能和C语言有关),
于是(name = 'sink' ) 的结果是false,
1 and false 等同于 true and flase,
所以结果是false,再译成Int就是0了,最后才更新成0,
and字符变成逻辑运算符了.
update employee set status=1, name = 'sink' where id = 99
写成
update employee set status=1 and name = 'sink' where id = 99
结果status字段被更新为 0,
我大吃一惊,怎么可能是0呢,对于Access不是很熟的我十分不解.
叫来同事,他看了看说是Access把后面的and name = 'sink' 当成布尔语句了,
我茅塞顿开,经过讨论后把我的理解写下来:
这里加上括号有助理解
update employee set status=(1 and (name = 'sink' ) ) where id = 99
由于id为99的行里name 不等于'sink',所以 name = 'sink' 的结果为false ,
而true会被access理解为-1或1(),
(或者说-1或1在这里等同于true),
false则等同于0,(可能和C语言有关),
于是(name = 'sink' ) 的结果是false,
1 and false 等同于 true and flase,
所以结果是false,再译成Int就是0了,最后才更新成0,
and字符变成逻辑运算符了.
- Access Update 语句的怪现象
- access "update语句的语法错误"解决
- MySQL UPDATE语句中的一个诡异现象
- Access中update能执行,VS下曝语法错误的怪异现象解决
- c#操作access,update语句不执行的解决办法
- c#操作access,update语句不执行的解决办法
- c#操作access,update语句不执行的解决办法
- ACCESS中的Update语句不支持Select的解决办法
- 访问加密过的Access之怪现象
- SQL Server 与 Access Update 语句
- Access update语句 提示 "操作必须使用一个可更新的查询"Access update语句 提示 "操作必须使用一个可更新的查询"
- if语句的一个现象
- Access,Update失败的BUG
- Access update语句 提示 "操作必须使用一个可更新的查询"
- 动软连接access数据库生成的update语句无法更新库信息
- UPDATE语句的用法
- UPDATE 语句的语法错误
- 复杂的update语句
- web上实现类似ftp客户端上传和下载
- ajax入门例子
- 顺风使舵
- asp调用存储过程
- 用log4net快速构建asp.net 异常日志
- Access Update 语句的怪现象
- email address 生成图片程序
- 让我们的信息随需应变
- 非典型性需求管理 - 开篇
- MySQL安全的二十三条军规
- css手册
- linux下select 和 poll的用法
- Hibernate QBC查询
- 黑客守则 & 黑客精神 & 中国黑客宣言