2011-01-31 27 views
15

Hola Tengo una columna de tipo nvarchar (1000). Necesito deshacerme de los caracteres de codificación de esa columna y reemplazarlos por sus caracteres especiales. Por ejemplo:¿Cómo actualizar una parte de la cadena usando la función de reemplazo en tsql?

column value is : 'This text values contains this '&' this'. 

tengo que sustituir con '&' '&'.

  1. primero tiene que encontrar el registro que tiene '&' en la columna (se puede usar como condición)
  2. Y entonces reemplazar sólo que esta palabra con su carácter especial

¿Cómo puedo hacer eso? Pl. ayudar a

Respuesta

30

Esto reemplazará en toda la columna

REPLACE(MyColumn, '&', '&') 

Vas a tener que anidan otros reemplazos ...

REPLACE(REPLACE(MyColumn, '&', '&'), '>', '>') 

Todos juntos

UPDATE myTable 
SET MyColumn = REPLACE(MyColumn, '&', '&') 
WHERE MyColumn LIKE '%&%' 
+0

@gbn: con la instrucción de actualización? – User13839404

+0

@Jango: lo siento, estaba corriendo y solo vi el número de reemplazo de cadena – gbn

+1

@gb: Gracias, pero creo que no funcionará sin mencionar el nombre de columna después de SET o ¿verdad? – User13839404

1
Update TABLE 
Set field = replace(field, '&', '&'); 
8
UPDATE mytable 
    SET mycol = REPLACE(mycol, N'&', N'&') 
    WHERE mycol LIKE '%&%' 

EDITAR Si decide reemplazar varias entidades html de una vez, el orden de las sustituciones puede cambiar los resultados.

Por ejemplo:

< 

convierte &< si reemplaza primera &amp; con & y luego &lt; con <, pero el resultado será &lt; si primero intenta reemplazar &lt; con < y luego &amp; con &.

Si tengo que hacer ese tipo de reemplazo, suelo reemplazar &amp; por este motivo. Sin duda, un caso extremo, y no es algo que sucede a menudo, pero nunca se sabe ...

+0

En realidad, estoy haciendo reemplazos múltiples. Tiene un punto. Gracias. – User13839404

5

sintaxis genérica:

UPDATE Table_Name 
SET Column_Name = REPLACE(Column_Name, 'Text_To_Be_Replaced', 'New_Text') 
WHERE Column_Name LIKE '%Text_To_Be_Replaced%' 
Cuestiones relacionadas