2014-11-10 5 views
1

값 목록이 있으며 해당 목록의 값을 Oracle 데이터베이스의 특정 열에 표시하지 않습니다 (어떤 버전인지 모름). 그래서 예를 들면Oracle 데이터베이스 열에 누락 된 값 확인

값 내 목록 A,B,C 내가 아래와 같이 테이블이있는 경우는 :

-------- 
|COLUMN| 
-------- 
|  C| 
|  A| 
-------- 

내가 기대하는 결과는 B 될 것이다.

SELECT <<List of values SQL, not sure what goes here>> 
EXCEPT 
SELECT column FROM table 

그러나 내가 처음 문에 대한 SQL이 어떻게 생겼는지 모르겠어요

지금까지 내 방법은 다음과 같은 SQL 쿼리하고있다. 지금까지 내가 함께했다 :

SELECT "A","B","C" FROM dual 

그러나 언급하고 3 열

또 다른 지점을 만들어으로 실제 문제에 약 100 항목이 거기에 있다는 것입니다이 원하는 효과가 없습니다 위의 장난감 예에서 3 개가 아니라 검색 할 목록.

답변

3

아마이 도움이 :

WITH static_list AS (
    SELECT 'A' AS v FROM dual UNION ALL 
    SELECT 'B' AS v FROM dual UNION ALL 
    SELECT 'C' AS v FROM dual 
) 
SELECT v FROM static_list 
MINUS (SELECT column 
      FROM table); 
+0

한 가지는 당신이 문으로 큰 끝낼 수 있도록 값의 실제 목록 (112 개) 값 주위에 많이 큰 것입니다 그러나, 정규 표현식은 오라클 10g과 이상이 목표를 달성하기 위해 사용될 수있다 . 이 솔루션을 사용해보십시오 – ahjmorton

+0

별도의 테이블을 만들어 거기에 값을 삽입 할 수 있습니다. 그런 다음'static_list'를이 새로운 테이블로 대체합니다. – DirkNM

+0

임시 테이블로이 작업을 수행 할 수 있다고 생각합니다. 새로운 영구 테이블을 쉽게 만들 수있는 상황이 아닙니다. With 선택 문을 많이 사용하여 Accepting을 사용하는 결과를 얻었습니다. – ahjmorton

0

더크의 솔루션은 잘 작동합니다.

SELECT trim(regexp_substr(str, '[^,]+', 1, level)) str 
FROM (SELECT 'A,B,C,D' str from dual) 
CONNECT BY instr(str, ',', 1, level - 1) > 0 
Minus 
Select column from table