Sql Oracle(+;)运算符等号
我知道(+)运算符在此查询中的作用:Sql Oracle(+;)运算符等号,sql,oracle,Sql,Oracle,我知道(+)运算符在此查询中的作用: SELECT * FROM TBL_TEST t, TBL_TEST_2 t2 WHERE t.FIELD (+) = t2.FIELD; 但(+)运算符在此类查询中的作用如下: SELECT * FROM TBL_TEST t WHERE t.FIELD (+) = 2; 我不知道 有人能解释一下吗?迫使甲骨文承认它是外部连接 select * from ( select 1 n from dual )
SELECT
*
FROM
TBL_TEST t, TBL_TEST_2 t2
WHERE
t.FIELD (+) = t2.FIELD;
但(+)运算符在此类查询中的作用如下:
SELECT
*
FROM
TBL_TEST t
WHERE
t.FIELD (+) = 2;
我不知道
有人能解释一下吗?迫使甲骨文承认它是外部连接
select *
from ( select 1 n from dual
) t
where n (+) = n+1
ORA-01416:两个表不能在外部相互连接
:)强制Oracle承认其外部连接
select *
from ( select 1 n from dual
) t
where n (+) = n+1
ORA-01416:两个表不能在外部相互连接
:)我有一个例子
select * from xxtest
V_ID V_NAME V_ADDRESS
5 PriceList 349FDAFD34M
7 PriceList 349FDAFD34M
7 Footer1 349FDAFD34M
5 Footer1 349FDAFD34M
5 Header1 349FDAFD34M
7 Header1 349FDAFD34M
select * from xxtest2
V_ID V_NAME V_ADDRESS
7 Header1 349FDAFD34M
查询01
select *
from xxtest aa, xxtest2 bb
where aa.v_id = bb.v_id(+) and bb.v_id(+) = 7
V_ID V_NAME V_ADDRESS V_ID V_NAME V_ADDRESS
7 PriceList 349FDAFD34M 7 Header1 349FDAFD34M
7 Footer1 349FDAFD34M 7 Header1 349FDAFD34M
7 Header1 349FDAFD34M 7 Header1 349FDAFD34M
5 PriceList 349FDAFD34M - - -
5 Footer1 349FDAFD34M - - -
5 Header1 349FDAFD34M - - -
查询02
select *
from xxtest aa, xxtest2 bb
where aa.v_id = bb.v_id(+) and bb.v_id = 7
V_ID V_NAME V_ADDRESS V_ID V_NAME V_ADDRESS
7 PriceList 349FDAFD34M 7 Header1 349FDAFD34M
7 Footer1 349FDAFD34M 7 Header1 349FDAFD34M
7 Header1 349FDAFD34M 7 Header1 349FDAFD34M
希望它能对你有所帮助。我有一个例子
select * from xxtest
V_ID V_NAME V_ADDRESS
5 PriceList 349FDAFD34M
7 PriceList 349FDAFD34M
7 Footer1 349FDAFD34M
5 Footer1 349FDAFD34M
5 Header1 349FDAFD34M
7 Header1 349FDAFD34M
select * from xxtest2
V_ID V_NAME V_ADDRESS
7 Header1 349FDAFD34M
查询01
select *
from xxtest aa, xxtest2 bb
where aa.v_id = bb.v_id(+) and bb.v_id(+) = 7
V_ID V_NAME V_ADDRESS V_ID V_NAME V_ADDRESS
7 PriceList 349FDAFD34M 7 Header1 349FDAFD34M
7 Footer1 349FDAFD34M 7 Header1 349FDAFD34M
7 Header1 349FDAFD34M 7 Header1 349FDAFD34M
5 PriceList 349FDAFD34M - - -
5 Footer1 349FDAFD34M - - -
5 Header1 349FDAFD34M - - -
查询02
select *
from xxtest aa, xxtest2 bb
where aa.v_id = bb.v_id(+) and bb.v_id = 7
V_ID V_NAME V_ADDRESS V_ID V_NAME V_ADDRESS
7 PriceList 349FDAFD34M 7 Header1 349FDAFD34M
7 Footer1 349FDAFD34M 7 Header1 349FDAFD34M
7 Header1 349FDAFD34M 7 Header1 349FDAFD34M
希望它能对你有所帮助。我在Oracle 12G中对它进行了测试,结果如下:
SELECT
*
FROM
TBL_TEST t
WHERE
t.FIELD = 2;
我对原始代码的猜测是,如果字段等于2,则返回字段值,否则返回null。如下所示:
SELECT T.STUDENT, T2.*
FROM TBL_TEST T
LEFT OUTER JOIN (SELECT 2 COLU FROM DUAL) T2 ON T.COUNT = T2.COLU;
我在Oracle 12G中对其进行了测试,结果与以下结果相同:
SELECT
*
FROM
TBL_TEST t
WHERE
t.FIELD = 2;
我对原始代码的猜测是,如果字段等于2,则返回字段值,否则返回null。如下所示:
SELECT T.STUDENT, T2.*
FROM TBL_TEST T
LEFT OUTER JOIN (SELECT 2 COLU FROM DUAL) T2 ON T.COUNT = T2.COLU;
外部联接的旧Oracle语法?这是表示外部联接的旧语法。如果没有连接,这就没有意义,即使您可以编写它。@Gadziu它仍然是左连接。这没有任何意义,我也这么认为。。。我检查了其他人的代码,我看到了类似这样的东西,它没有使sanse…旧的Oracle外部连接语法?这是表示外部连接的遗留语法。如果没有连接,这就没有意义,即使您可以编写它。@Gadziu它仍然是左连接。这没有任何意义,我也这么认为。。。我检查了别人的代码,我看到了这样的东西,它没有使sanse…谢谢,很多:)所以它现在有一种sanse:DThank很多:)所以它现在有一种sanse:D