使用SQL更新Access表报错:条件表达式中数据类型不匹配
Access SQL更新时数据类型不匹配的解决办法
嘿,我来帮你搞定这个问题!你遇到的「条件表达式中数据类型不匹配」错误,根源出在布尔型字段的比较方式上。
你的table2.Ind应该是Access里的**是/否(Boolean)**字段,这种字段存储的是布尔值,不是字符串类型的文本。你原来的代码里用"TRUE"(带引号的字符串)去和它比较,Access会把两者判定为不同数据类型,自然就报错了。
给你两种修正后的写法,都能解决问题:
写法1:用INNER JOIN的标准多表更新(推荐)
Access对多表UPDATE的支持更偏向JOIN语法,这种写法更清晰规范:
UPDATE table1 INNER JOIN table2 ON table1.Name = table2.Name SET table1.ReportName = "UPDATED" WHERE table2.Ind = TRUE;
写法2:基于你原代码调整条件
如果你想保留原来的多表逗号分隔写法,只需要把条件里的"TRUE"改成不带引号的TRUE(或者用Access内部表示真的-1也可以):
UPDATE table1, table2 SET table1.ReportName = "UPDATED" WHERE table1.Name = table2.name AND table2.Ind = TRUE;
简单说下原理:Access里的「是/否」字段,底层用-1表示“是(TRUE)”,0表示“否(FALSE)”,所以你直接用TRUE或者-1去匹配都能生效,但用带引号的字符串就会触发类型不匹配的错误。
内容的提问来源于stack exchange,提问作者dinodan
相关产品推荐
相关产品推荐

