2011-01-31 1 views
15

Ciao Ho una colonna di tipo nvarchar (1000). Ho bisogno di liberarmi dei caratteri di codifica da quella colonna e sostituirli con i loro caratteri speciali. Per esempio:Come aggiornare una parte della stringa usando la funzione replace in tsql?

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

devo sostituire '&' con '&'.

  1. prima trovare il record che ha '&' nella colonna (può essere utilizzando come condizione)
  2. e quindi sostituire solo questa parola con il suo carattere speciale

Come posso fare? Pl. aiutare

risposta

30

Questo sostituirà in tutta la colonna di

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

Dovrete nidificare altre sostituzioni ...

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

Tutti insieme

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

@gbn: con la dichiarazione di aggiornamento? – User13839404

+0

@Jango: scusate, stavo correndo e ho visto solo la stringa sostituire il numero – gbn

+1

@ gb: Grazie, ma penso che non funzionerà senza menzionare il nome della colonna dopo SET o lo sarà? – User13839404

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

EDIT Se si decide di sostituire più entità HTML in una sola volta, l'ordine delle sostituzioni possono cambiare i risultati.

Ad esempio:

< 

diventa &< se si sostituisce primo &amp; con & e poi &lt; con <, ma il risultato sarà &lt; se si tenta prima di sostituire &lt; con < e poi &amp; con &.

Se devo fare questo tipo di sostituzione, di solito sostituire &amp; ultimo per questo motivo. Certo, un caso limite, e non qualcosa che accade spesso, ma non si sa mai ...

+0

In realtà, sto facendo sostituzioni multiple. Tu hai un punto. Grazie. – User13839404

5

sintassi Generico:

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