我正在使用如下形式的查询检查两个表之间的地址差异:
SELECT a.*, (a.address <> b.address) AS discrepancy
FROM table1 AS a
LEFT JOIN table2 AS b
ON a.uniqueIdentifier = b.uniqueIdentifier
我期待的是,如果a.address与b.address不完全匹配,它将评估为true;因此,领域,“差异”#39;将返回true或&#39; 1&#39;。
(注意,使用左连接是因为table2中可能没有匹配的行,但我需要从table1捕获数据,因为我正在迭代列表并显示地址是否有问题)
该查询在我的单元测试中使用SQLite,但随后在使用ODBC的DB2数据库的开发中失败。
返回的错误代码为[Code: -104, SQL State: 42601] [SQL0104] Token A was not valid. Valid tokens: (.
如果DB2中根本不支持这一点,我可以使用其他想法来制作查询。
注意:进一步测试表明
select a.id, (1+1) as two from table1 as a
有效,而
select a.id, (1=1) as two from table1 as a
=&gt; Token 1 was not valid
答案 0 :(得分:1)
v: SomeTrait
答案 1 :(得分:1)
DB2 SQL没有布尔数据类型,因此您无法通过SQL语句生成布尔值。这样的事情应该有效:
SELECT a.*,
CASE WHEN a.address <> b.address THEN 1 ELSE 0 END AS discrepancy
FROM ...