我是DB2的新手,找不到与EXCEPT
查询相关的任何内容[除了]非常简单的示例。我正在尝试比较两个表中的值,以便返回TABLE_A
但不在TABLE_B
中的值。问题是被比较的列不是完全关键,但首先需要一些操作。
ID_1
的 TABLE_A
字段如下所示:000 999
ID_2
的 TABLE_B
字段如下所示:111-000999
因此,通过按摩每个ID的数据,我们得到此样本行的000999
的键值。这应该导致从查询结果中排除此行,因为两个表中都存在数据。
SELECT REPLACE (ID_1, ' ','') AS ID_1_TRIM
FROM MYDB.TABLE_A
EXCEPT
SELECT SUBSTRING(ID_2,5,10)
FROM MYDB.TABLE_B
此语法不起作用,它似乎返回TABLE_A
中的所有值,即使按摩键值也出现在TABLE_B
中。
答案 0 :(得分:1)
SELECT trim(REPLACE (ID_1, ' ','')) AS ID_1_TRIM
FROM MYDB.TABLE_A
EXCEPT
SELECT trim(SUBSTRING(ID_2,5,10)) FROM MYDB.TABLE_B
或演员
SELECT cast(trim(REPLACE (ID_1, ' ','')) as varchar(15)) AS ID_1_TRIM
FROM MYDB.TABLE_A
EXCEPT
SELECT cast(trim(SUBSTRING(ID_2,5,10)) as varchar(15)) FROM MYDB.TABLE_B
在我的查询中,您的查询工作是否超出了ID_1中的空间特征?