2010-08-09 15 views
51

Estoy buscando reemplazar valores en una columna en particular. Por ejemplo, la siguiente columna de valores¿Cómo reemplazar valores específicos en una columna de base de datos de Oracle?

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

debe (en sustitución de est1 con rest1)

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

Miré a los resultados de búsqueda y que se encuentran los que utilizan sustituir para obtener valores de una tabla de doble. Estoy buscando actualizar la tabla en lugar de obtener valores. – schar

Respuesta

136

Uso REPLACE:

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

Si desea actualizar los valores de la tabla, el uso :

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

En Oracle esto debería ser UPDATE t, no UPDATE TABLE t. –

+1

@Tom Presumiblemente, 'TABLE' se usa aquí como el nombre de tabla ficticia (y 't' es el alias). La instrucción select también obtiene valores de una tabla ficticia de nombre similar. – nbrooks

16

Si necesita actualizar el valor en una tabla en particular:

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

donde

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

estoy usando la versión 4.0.2.15 con Build 15.21

Para mí que necesitaba esto :

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

Poniendo t.column_name en la fi primer argumento de replace no funcionó.

-1

En Oracle, no existe el concepto de nombre de esquema, a fin de tratar de utilizar este

update schemname.tablename t 
set t.columnname = replace(t.columnname, t.oldvalue, t.newvalue); 
Cuestiones relacionadas