2010-08-09 5 views
51

Je cherche à remplacer des valeurs dans une colonne particulière. Par exemple les valeurs colonne suivanteComment remplacer des valeurs spécifiques dans une colonne de base de données Oracle?

column name 
---------- 
Test1 
Test2 
Test3 
Test12 

doit être (en remplacement est1 avec rest1)

column name 
---------- 
Trest1 
Test2 
Test3 
Trest12 
+0

Je regardais les résultats de la recherche et ceux trouvés qui utilisent le remplacer pour obtenir des valeurs d'une table double. Je cherche à mettre à jour la table plutôt que d'obtenir des valeurs. – schar

Répondre

136

Utilisation REPLACE:

SELECT REPLACE(t.column, 'est1', 'rest1') 
    FROM MY_TABLE t 

Si vous souhaitez mettre à jour les valeurs du tableau, l'utilisation :

UPDATE MY_TABLE t 
    SET column = REPLACE(t.column, 'est1', 'rest1') 
+13

Dans Oracle, ceci devrait être UPDATE t, pas UPDATE TABLE t. –

+1

@Tom On suppose que 'TABLE' est utilisé ici comme nom de table fictif (et 't' est l'alias). L'instruction select obtient également des valeurs d'une table fictive nommée de la même manière. – nbrooks

16

Si vous avez besoin de mettre à jour la valeur dans une table particulière:

UPDATE TABLE-NAME SET COLUMN-NAME = REPLACE(TABLE-NAME.COLUMN-NAME, 'STRING-TO-REPLACE', 'REPLACEMENT-STRING'); 

TABLE-NAME   - The name of the table being updated 
    COLUMN-NAME  - The name of the column being updated 
    STRING-TO-REPLACE - The value to replace 
    REPLACEMENT-STRING - The replacement 
-2

J'utilise la version 4.0.2.15 avec 15,21 Construire

Pour moi, je besoin de cette :

UPDATE table_name SET column_name = REPLACE(column_name,"search str","replace str"); 

En mettant t.column_name dans le Le premier argument de replace ne fonctionnait pas.

-1

Dans Oracle, il y a le concept de nom de schéma, donc essayez d'utiliser cette

update schemname.tablename t 
set t.columnname = replace(t.columnname, t.oldvalue, t.newvalue); 
Questions connexes