Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较select子句中的字段在sqlite中有效,但在DB2中无效_Sql_Sqlite_Db2_Odbc - Fatal编程技术网

比较select子句中的字段在sqlite中有效,但在DB2中无效

比较select子句中的字段在sqlite中有效,但在DB2中无效,sql,sqlite,db2,odbc,Sql,Sqlite,Db2,Odbc,我正在使用如下形式的查询检查两个表之间的地址差异: SELECT a.*, (a.address <> b.address) AS discrepancy FROM table1 AS a LEFT JOIN table2 AS b ON a.uniqueIdentifier = b.uniqueIdentifier 选择一个*(a.地址b.地址)作为差异 从表1中作为 左键将表2连接为b 在a.uniqueIdentifier=b.uniqueIdentifier上 我期

我正在使用如下形式的查询检查两个表之间的地址差异:

SELECT a.*, (a.address <> b.address) AS discrepancy 
FROM table1 AS a 
LEFT JOIN table2 AS b 
ON a.uniqueIdentifier = b.uniqueIdentifier
选择一个*(a.地址b.地址)作为差异
从表1中作为
左键将表2连接为b
在a.uniqueIdentifier=b.uniqueIdentifier上
我期望的是,如果a.address与b.address不完全匹配,那么它的计算结果将为true;因此,“差异”字段将返回true或“1”

(注意,之所以使用左联接,是因为表2中可能没有匹配的行,但不管怎样,我都需要从表1中捕获数据,因为我正在遍历列表并显示地址是否有问题)

该查询在我使用SQLite进行单元测试时有效,但在使用ODBC开发DB2数据库时失败

返回的错误代码是
[code:-104,SQL状态:42601][SQL0104]令牌A无效。有效令牌:(.

如果DB2根本不支持这一点,我愿意接受其他方法来设计查询


注:进一步测试表明

从表1中选择一个id(1+1)作为两个

工作,而

从表1中选择a.id,(1=1)作为两个
=>
令牌1无效

选择一个*,如果a.address b.address,则以1结束,否则以不符结束
SELECT a.*, case when a.address <> b.address then 1 else 0 end AS discrepancy 
FROM table1 AS a 
LEFT JOIN table2 AS b 
ON a.uniqueIdentifier = b.uniqueIdentifier
从表1中作为 左键将表2连接为b 在a.uniqueIdentifier=b.uniqueIdentifier上
选择一个*,当a.address b.address然后1,否则0以不符结束
从表1中作为
左键将表2连接为b
在a.uniqueIdentifier=b.uniqueIdentifier上

DB2 SQL没有布尔数据类型,因此不能通过SQL语句生成布尔值。类似的操作应该可以:

SELECT a.*,  
       CASE WHEN a.address <> b.address THEN 1 ELSE 0 END AS discrepancy 
FROM ...
选择一个*,
当a.address b.address然后1 ELSE 0作为差异结束时的情况
从…起

DB2 SQL没有布尔数据类型,因此不能通过SQL语句生成布尔值。类似的操作应该可以:

SELECT a.*,  
       CASE WHEN a.address <> b.address THEN 1 ELSE 0 END AS discrepancy 
FROM ...
选择一个*,
当a.address b.address然后1 ELSE 0作为差异结束时的情况
从…起

您实际上不需要括号。没有括号它可以工作吗?您实际上不需要括号。没有括号它可以工作吗?感谢您解释原因。我在谷歌上搜索了db2 boolean,9.7Boolean中引入了boolean数据类型,只能在SQL PL程序中使用,不能在SQL中使用——请参阅感谢您解释原因。我在谷歌上搜索了b2 boolean和显然是boolean在9.7Boolean中被引入,数据类型只能在SQL PL程序中使用,不能在SQL中使用——请参阅