Reputation: 335
I'm trying to locate a substring in a concatenation of data from different columns and return a value based on the result. I've tried this query:
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
However I'm getting weird oracle errors (end-of-file on communication channel). Will it ever work?
Thanks!
Upvotes: 0
Views: 142
Reputation: 3396
Try instr
function instead of 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
Upvotes: 2