2014-10-14 3 views
2

제품 데이터를 반환하는 간단한 SQL 문이 있습니다. 기본적으로 항목의 이름을 입력 할 수 있습니다. 항목이 정확히 일치하면 아무 것도하지 않습니다. 정확한 요청과 일치하는 항목이 없으면 SQL에서 'WHERE'문을 전환하고 싶습니다. 현재 모양은 다음과 같습니다.CASE를 Where statment Oracle SQL에서 사용하는 방법?

SELECT 
    Product_ID, 
    Product_Name, 
    Product_Type, 
    Product_Cost 
FROM tblProducts 
WHERE Product_Name = 'iPhone' 

분명히 'iPhone'이라는 제품 만 반환합니다. iPhone 5는 반환되지 않습니다. 어떤 제품이없는 경우에 따라서

WHERE Product_Name like '%iPhone%' 

: 쿼리가 처음 Where 절을 사용하여 0 행을 가져 오는 경우

난 할 노력하고있어 다음과 같은 일을 할 것입니다 두 번째 where 절을 트리거입니다 정확하게 아이폰이라고 불리면 아이폰을 어딘가에 가진 제품을 돌려 준다.

출력 결과에 추가 필드를 만들려고하면 쿼리 결과 창에이 필드를 표시하고 싶습니다. '두 번째 Where 절이 1로 설정된 경우 두 번째 Where 절이 사용되었습니다.' 경우 1 = 정확하게 일치, 0 = 정확한

그래서 내가 좋아하는 뭔가 끝낼 것이다 일치하지 :

SELECT 
    Product_ID, 
    Product_Name, 
    Product_Type, 
    Product_Cost 
CAST(0 AS VARCHAR2(1)) as match 
FROM tblProducts 
WHERE Product_Name = 'iPhone' 

을하지만 어떻게 해결하지 못할 :

ID  Name   Type  Cost Matched 
-----------------------------------------------  
101| New iPhone Case| Electronics | 4.99 | 1 

지금까지 내가 가지고 어디서 스위치 케이스를 사용하여 설명하십시오 :

SELECT 
    Product_ID, 
    Product_Name, 
    Product_Type, 
    Product_Cost 
CAST(0 AS VARCHAR2(1)) as match 
FROM tblProducts 
WHERE Product_Name = 'iPhone' 
if (results = 0){ 
SELECT 
    Product_ID, 
    Product_Name, 
    Product_Type, 
    Product_Cost 
CAST(1 AS VARCHAR2(1)) as match 
FROM tblProducts 
WHERE Product_Name like '%iPhone%' 
} 

아이디어를 얻을 수있는 방법 그의?

답변

2

적어도 절이 아닌 case 문으로이 작업을 수행 할 수 없습니다.

상당히 직선 앞으로 것 이외의 정확한 일치를 생성하는 쿼리는 :

SELECT Product_ID, 
     Product_Name, 
     Product_Type, 
     Product_Cost 
     CASE Product_Name WHEN `iPhone` THEN 0 ELSE 1 END AS Match 
FROM tblProducts 
WHERE Product_Name LIKE '%iPhone%' 

까다로운 부분이 아닌 정확한 정확한 일치가 존재하지 않는 경우에만 일치 반환하는 것입니다. not exists 연산자로 수행 할 수 있습니다.

SELECT Product_ID, 
     Product_Name, 
     Product_Type, 
     Product_Cost 
     CASE Product_Name WHEN `iPhone` THEN 0 ELSE 1 END AS Match 
FROM tblProducts 
WHERE Product_Name = 'iPhone' OR 
     (Product_Name LIKE '%iPhone%' AND 
     NOT EXISTS (SELECT * 
        FROM tblProducts 
        WHERE Product_Name = 'iPhone') 
     ); 
관련 문제