2013-04-05 3 views
0

다른 열의 데이터를 병합하여 하위 문자열을 찾고 결과에 따라 값을 반환하려고합니다. 나는이 쿼리를 시도했다 :연결된 열이있는 SQL CASE

SELECT 
    V_CMR_1.*, 
    T_RICEVITORI.*, 
    CASE 
     WHEN contains(V_CMR_1.SP1C || ' ' || V_CMR_1.SP2C || ' ' || V_CMR_1.SP3C || ' ' || V_CMR_1.SP4C || ' ' || V_CMR_1.SP5C, 'GIALLA') > 0 THEN 'GELBE' 
     WHEN contains(V_CMR_1.SP1C || ' ' || V_CMR_1.SP2C || ' ' || V_CMR_1.SP3C || ' ' || V_CMR_1.SP4C || ' ' || V_CMR_1.SP5C, 'ROSSA') > 0 THEN 'ROTE' 
     END AS SORTE 
FROM 
    MAGAZZINO.V_CMR_1, 
    MAGAZZINO.T_RICEVITORI 
WHERE 
    V_CMR_1.ID_RICEVITORE=T_RICEVITORI.ID_RICEVITORE 
    AND V_CMR_1.ID_USCITA=:IDUSCITA 
    AND V_CMR_1.ID_POSIZIONE LIKE :ANNO 

그러나 내가 갖는 이상한 오라클 오류 (파일의 끝 통신 채널). 작동 여부

감사합니다.

답변

2

은 감사를 대신 contains

SELECT V_CMR_1.*, 
     T_RICEVITORI.*, 
     CASE WHEN instr(V_CMR_1.SP1C || ' ' || V_CMR_1.SP2C || ' ' || V_CMR_1.SP3C || ' ' || V_CMR_1.SP4C || ' ' || V_CMR_1.SP5C, 'GIALLA') > 0 THEN 'GELBE' 
      WHEN instr(V_CMR_1.SP1C || ' ' || V_CMR_1.SP2C || ' ' || V_CMR_1.SP3C || ' ' || V_CMR_1.SP4C || ' ' || V_CMR_1.SP5C, 'ROSSA') > 0 THEN 'ROTE' 
     END AS SORTE 
FROM MAGAZZINO.V_CMR_1, MAGAZZINO.T_RICEVITORI 
WHERE V_CMR_1.ID_RICEVITORE=T_RICEVITORI.ID_RICEVITORE 
AND V_CMR_1.ID_USCITA=:IDUSCITA AND V_CMR_1.ID_POSIZIONE LIKE :ANNO 
+0

신난다의 instr 기능을보십시오! – asg2012