Problema: Come posso fare per sostituire una stringa con un'altra in un campo di tipo Text o nText?
Considerazioni: Se il campo fosse di tipo varchar o nvarchar il problema non si porrebbe, in quanto esiste in SqlServer una funzione (più in generale esiste in T-Sql) che lo fa in modo nativo: la funzione "Replace". Funzione che, però, non lavora sui campi text. Bisogna utilizzare un'altra funzione, che però ha un utilizzo più generico: UpdateText
Soluzione:
declare @TestoVecchio varchar(1000)
set @TestoVecchio = 'Vecchio'
declare curs cursor local fast_forward
for
select
idriga,
textptr(Colonna),
charindex(@TestoVecchio, Colonna)-1
from
Tabella
where
Colonna
like
'%' + @TestoVecchio +'%'
declare @Testonuovo varchar(1000)
set @Testonuovo = 'nuovo'
declare @txtlen int
set @txtlen = len(@TestoVecchio)
declare @ptr binary(16)
declare @pos int
declare @id int
open curs
fetch next from curs into @id, @ptr, @pos
while @@fetch_status = 0
begin
updatetext Tabella.Colonna @ptr @pos @txtlen @Testonuovo
fetch next from curs into @id, @ptr, @pos
end
close curs
deallocate curs
Note:
Tabella è la tabella di riferimento
Colonna è il campo in cui si deve modificare il testo
idriga è l'id della tabella (in questo caso è di tipo int, quindi la variabile @id è impostata come int, se fosse di tipo diverso basta cambiare la dichiarazione della variabile @id nel tipo corretto)
Nessun commento:
Posta un commento