0

異なる列からのデータの連結で部分文字列を見つけ、結果に基づいて値を返そうとしています。私はこのクエリを試しました:

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

ただし、奇妙なオラクル エラー (通信チャネルのファイルの終わり) が発生します。それはうまくいきますか?

ありがとう!

4

1 に答える 1

2

instr代わりに関数を試してください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
于 2013-04-05T17:31:17.067 に答える