合并和空值
COALESCE and NULL
我想创建一个 SQL 查询(使用 Oracle),我在其中组合 2 列的值,每列都存在于不同的表中(它们由 CODE 连接)。这是我到目前为止的查询:
SELECT COALESCE(a.SERIES1,b.SERIES2)
FROM TABLE1 a, TABLE2 b
WHERE a.CODE = b.CODE
但是,当我将列连接在一起时,我也想 return 为空。我想我只得到 SERIES1 = SERIES2...
的实例
理想情况下,我想得到以下内容:
- 如果 SERIES1 不为空,return SERIES1
- 如果 SERIES2 不为空,return SERIES2
- 如果 SERIES1 和 SERIES2 都为 null,return null
我希望我说清楚了并且我使用了正确的术语...
谢谢!
我认为问题不在于 COALESCE
,而在于您进行联接的方式。看起来您可能正在寻找 外连接,而您却在寻找 内连接。
虽然 Oracle 有自己的语法来按照您的方式进行外部连接(即通过列出两个表并将连接条件放在 WHERE
子句中),但应该首选 ANSI 语法:
SELECT COALESCE(a.SERIES1,b.SERIES2)
FROM TABLE1 a
FULL OUTER JOIN TABLE2 b ON a.CODE = b.CODE
我想创建一个 SQL 查询(使用 Oracle),我在其中组合 2 列的值,每列都存在于不同的表中(它们由 CODE 连接)。这是我到目前为止的查询:
SELECT COALESCE(a.SERIES1,b.SERIES2)
FROM TABLE1 a, TABLE2 b
WHERE a.CODE = b.CODE
但是,当我将列连接在一起时,我也想 return 为空。我想我只得到 SERIES1 = SERIES2...
的实例理想情况下,我想得到以下内容:
- 如果 SERIES1 不为空,return SERIES1
- 如果 SERIES2 不为空,return SERIES2
- 如果 SERIES1 和 SERIES2 都为 null,return null
我希望我说清楚了并且我使用了正确的术语...
谢谢!
我认为问题不在于 COALESCE
,而在于您进行联接的方式。看起来您可能正在寻找 外连接,而您却在寻找 内连接。
虽然 Oracle 有自己的语法来按照您的方式进行外部连接(即通过列出两个表并将连接条件放在 WHERE
子句中),但应该首选 ANSI 语法:
SELECT COALESCE(a.SERIES1,b.SERIES2)
FROM TABLE1 a
FULL OUTER JOIN TABLE2 b ON a.CODE = b.CODE