2010-10-29 5 views
1

Je dois remplacer un chemin stocké dans un champ de texte Oracle DB. Cependant, des chemins ont été spécifiés avec différents cas (par exemple MYPATH, MyPath, Mypath, mypath). Lorsque vous utilisez une combinaison de REPLACE et UPPER, cela ne fonctionne pas comme je l'ai besoin pour, à savoir:ORACLE SQL: Remplacer une partie du champ de texte en ignorant le cas

UPDATE Actions 
SET Destination = REPLACE(UPPER(Destination), 'MYPATH', 'My_New_Path') 

Cela ne REPLACE mais laisse tout en majuscules - même pour les lignes où il n'y a rien pour remplacer

AVANT: MyPath\FileName - APRÈS: My_New_Path\FILENAME
AVANT: DummyText - APRÈS: DUMMYTEXT

Ce que je vraiment besoin est de remplacer toutes les occurrences de MyPath, quel que soit le ca se sur My_New_Path, sans toucher le boîtier sur les autres lignes ou d'autres parties du champ

Des idées? Je suis gratté la tête en vain ...

PS: Travailler avec Oracle 9 ...

Répondre

3

Peut-être ceci:

UPDATE Actions 
SET Destination = SUBSTR(Destination,1,INSTR(UPPER(Destination), 'MYPATH')-1) 
        || 'My_New_Path' 
        || SUBSTR(Destination,INSTR(UPPER(Destination), 'MYPATH')+6) 
WHERE UPPER(Destination) LIKE '%MYPATH%'; 
+0

Darn, Tony types fater que moi! – symcbean

1

je vais vous suggérons d'utiliser regexp_replace() mais IIRC ce n'est pas disponible dans Oracle 9.

Quelque chose comme ça alors:

UPDATE atable 
SET afield=SUBSTR(afield, 1, (INSTR(UPPER(afield),'old')-1) 
    || 'new' 
    || SUBSTR(afield, INSTR(UPPER(afield),'old')+LENGHT('old'), LENGTH(afield)) 
WHERE afield LIKE '%' || 'old' || '%'; 
1

Combi nation + peaufinage des 2 réponses faites fonctionner:

actions UPDATE SET Destination = SUBSTR (Destination, 1, (INSTR (UPPER (Destination), 'OLD') - 1))
|| «NOUVEAU» || SUBSTR (Destination, INSTR (UPPER (destination), 'OLD') + LONGUEUR ('OLD'), LONGUEUR (Destination)) O 0 UPPER (Destination) COMME '% OLD%';

Merci les gars! - Je voterais les deux réponses, mais je viens de m'inscrire et je n'ai pas assez de réputation ...

+0

en tant que questionneur, vous devez sélectionner l'un d'entre eux comme réponse acceptée - vous n'avez besoin d'aucun représentant pour le faire. –

Questions connexes