2012-12-14 86 views
0

我有以下查询:SQL查询 - 我倒是希望限制不起作用

SELECT 
(substr(REGEXP_SUBSTR(qot_sup_xpressfeed, ',[^,]+,'), 2, length(REGEXP_SUBSTR(qot_sup_xpressfeed, ',[^,]+,')) - 2)) , 
xex.xex_xexc_k, 
    FROM qot, sec, exc, ctr, xcx, xex, xexc, xcrr, crr 
WHERE qot_source = 'X' 
     AND qot_id = 2029557521 
     AND nvl(qot_real_exc_id, qot_exc_id) = exc_id 
     AND exc_ctr_id = ctr_id 
     AND qot_sec_id = sec_id 
     AND nvl(qot_real_exc_id, qot_exc_id) = xex_exc_id(+) 
     AND qot_crr_id = xcx_crr_id(+) 
     AND xex_xexc_k = xexc_k(+) 
     AND xcx_xcrr_k = xcrr_k(+) 
     AND qot_crr_id = crr_id(+) 
     AND qot_status IN (1, 2) 
     AND (qot_sup_xpressfeed IS NULL OR to_number(substr(REGEXP_SUBSTR(qot_sup_xpressfeed, ',[^,]+,'), 2, length(REGEXP_SUBSTR(qot_sup_xpressfeed, ',[^,]+,')) - 2)) = xexc_k); 

当我注释掉最后限制AND (qot_sup_xpressfeed IS NULL OR to_number(substr(REGEXP_SUBSTR(qot_sup_xpressfeed, ',[^,]+,'), 2, length(REGEXP_SUBSTR(qot_sup_xpressfeed, ',[^,]+,')) - 2)) = xexc_k);我得到的结果:

1135 67 
1135 111 
1135 549 
1135 246 
1135 103 
1135 564 
1135 1135 
1135 21 

所以你可以看到我有一排:

但是我却越来越不重sults当我添加的最后一个限制:

AND (qot_sup_xpressfeed IS NULL OR to_number(substr(REGEXP_SUBSTR(qot_sup_xpressfeed, ',[^,]+,'), 2, length(REGEXP_SUBSTR(qot_sup_xpressfeed, ',[^,]+,')) - 2)) = xexc_k); 

我期望我会得到1次的结果(所提到的1135 1135)。 我在做什么错?

回答

1

您正在选择xex.xex_xexc_k,而您的测试是xexc_k。由于这是一个外部连接,他们可能会有所不同。当与xex.xex_xexc_k相比时会发生什么?