tutorial online español engine documentacion books sql sql-server database database-administration

online - sql server database engine



Cómo reemplazar una cadena en una columna de tabla de SQL Server (9)

Es así de fácil:

update my_table set path = replace(path, ''oldstring'', ''newstring'')

Tengo una tabla ( SQL Sever ) que hace referencia a las rutas ( UNC o de otro tipo), pero ahora la ruta va a cambiar.

En la columna de ruta, tengo muchos registros y necesito cambiar solo una parte de la ruta, pero no la ruta completa. Y necesito cambiar la misma cadena a la nueva, en cada registro.

¿Cómo puedo hacer esto con una simple update ?


Intenté lo anterior pero no dio el resultado correcto. El siguiente hace:

update table set path = replace(path, ''oldstring'', ''newstring'') where path = ''oldstring''


Puedes usar esta consulta

update table_name set column_name = replace (column_name , ''oldstring'' ,''newstring'') where column_name like ''oldstring%''


Si el tipo de columna de destino es distinto de varchar / nvarchar como texto , debemos convertir el valor de la columna como una cadena y luego convertirlo en:

update URL_TABLE set Parameters = REPLACE ( cast(Parameters as varchar(max)), ''india'', ''bharat'') where URL_ID=''150721_013359670''


También puede reemplazar texto grande por plantilla de correo electrónico en tiempo de ejecución, aquí hay un ejemplo simple para eso.

DECLARE @xml NVARCHAR(MAX) SET @xml = CAST((SELECT [column] AS ''td'','''', ,[StartDate] AS ''td'' FROM [table] FOR XML PATH(''tr''), ELEMENTS ) AS NVARCHAR(MAX)) select REPLACE((EmailTemplate), ''[@xml]'', @xml) as Newtemplate FROM [dbo].[template] where id = 1


Todas las respuestas son excelentes, pero solo quiero darles un buen ejemplo.

select replace(''this value from table'', ''table'', ''table but updated'')

esta declaración SQL reemplazará la existencia de la palabra "tabla" (segundo parámetro) dentro de la declaración dada (primer parámetro) con el tercer parámetro

el valor inicial es this value from table pero después de ejecutar la función de reemplazo será this value from table but updated

Y aquí hay un ejemplo real.

UPDATE publication SET doi = replace(doi, ''10.7440/perifrasis'', ''10.25025/perifrasis'') WHERE doi like ''10.7440/perifrasis%''

por ejemplo si tenemos este valor

10.7440/perifrasis.2010.1.issue-1

Se convertirá

10.25025/perifrasis.2010.1.issue-1

Espero que esto te dé una mejor visualización.


UPDATE CustomReports_Ta SET vchFilter = REPLACE(CAST(vchFilter AS nvarchar(max)), ''//Ingl-report/Templates'', ''C:/Customer_Templates'') where CAST(vchFilter AS nvarchar(max)) LIKE ''%//Ingl-report/Templates%''

Sin la función CAST obtuve un error

El tipo de datos de argumento ntext no es válido para el argumento 1 de la función de replace .


UPDATE [table] SET [column] = REPLACE([column], ''/foo/'', ''/bar/'')


select replace(ImagePath, ''~/'', ''../'') as NewImagePath from tblMyTable

donde "ImagePath" es mi nombre de columna.
"NewImagePath" es la columna temporal Nombre en lugar de "ImagePath"
"~ /" es mi cadena actual. (cadena antigua)
"../" es mi cadena solicitada. (nueva cadena)
"tblMyTable" es mi tabla en la base de datos.