You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中(+)的含义解析:带(+)的字段等于常量的疑问

Oracle (+)外连接中t2.c3(+) = 'some_string'的含义

你看到的是Oracle专属的老式外连接语法,先拆解整个语句:

  • t1.b1 = t2.b2(+) 表示左外连接:保留t1的所有行,匹配t2中b2等于t1.b1的行;如果t1的某行在t2里找不到匹配,t2的所有列会显示NULL。

而第四行的t2.c3(+) = 'some_string',核心是把这个过滤条件绑定到右表t2的匹配规则里,具体效果等价于ANSI SQL的左外连接ON子句里的条件:

SELECT t1.a1, t2.a2
FROM t1
LEFT JOIN t2 
  ON t1.b1 = t2.b2
  AND t2.c3 = 'some_string'

简单说就是:

  • 匹配t2行时,必须同时满足两个条件:t2.b2 = t1.b1 且 t2.c3 = 'some_string'
  • 如果t1的某行在t2里找不到同时满足这两个条件的行,依然保留t1的该行,t2的列显示NULL

如果去掉(+)写成t2.c3 = 'some_string',效果就完全不同了:这会变成左外连接完成后,再过滤掉t2.c3不等于'some_string'的行(包括t2为NULL的行),相当于把左外连接变成了内连接。

这种老式的(+)语法现在已经不推荐使用,ANSI标准的LEFT JOIN写法逻辑更清晰,可读性更强。

内容的提问来源于stack exchange,提问作者user18335335

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:42:36