Come cambiare parte di un campo nvarchar(MAX)?

giovedì 25 ottobre 2012 - 11.44
Tag Elenco Tags  SQL Server 2008 R2

lalloburo Profilo | Newbie

ciao a tutti,
ho questo problema:
poniamo che io abbia un campo di appunti nvarchar(MAX) in una tabella e che in alcuni record, tra le varie cose scritte in quel campo, ci sia un termine 'xxxxx'.
Vorrei sapere se c'è la possibilità di scrivere una query che rintracci quel termine in tutti i record e lo cambi in 'yyyyyy' senza modificare il resto del contenuto.
Una sorta di "cerca e sostituisci".
Non sono molto pratico e saprei farlo se si trattasse di sostituire TUTTO il contenuto del campo, ma solo una parte....

Mi appello alla vostra esperienza e disponibilità e chiedo scusa se, come forse sarà, il quesito vi sembrerà banale, ma per me (vi assicuro) non lo è affatto!!
A presto!
Lallo

dinoxet Profilo | Senior Member

ciao
potresti usare replace()


DINOXET
__________________________________________
impossible is only a word

lalloburo Profilo | Newbie

Innanzitutto Grazie del tempo che mi dedichi!
premetto (come anticipato) che non sono pratico. Mi pare però che il replace preveda che io sappia il contenuto del campo, mentre a me servirebbe un qualcosa che cambiasse solo il mio termine non sapendo però cosa ci sarà attorno. Vado con un esmpio stupido, ma che forse è più chiaro.

ho n record in cui vorrei cambiare 'Milano' con 'Torino' in quei record la gente ci ha scritto mille cose ad esempio:

-mi è piaciuto un sacco Milano
-Sono nato a Milano
-l'ho visto arrivava da Milano
-mi piace la pizza
-ecc.
dovrebbero diventare:

-mi è piaciuto un sacco Torino
-Sono nato a Torino
-l'ho visto arrivava da Torino
-mi piace la pizza
-ecc.

chiedo scusa della banalità, ma è difficile spiegarsi...
Grazie Lallo

dinoxet Profilo | Senior Member

ciao
di niente
la sintassi è la seguente :

REPLACE(nomecampo, 'MILANO', 'TORINO')

DOVUNQUE SIA SCRITTO


DINOXET
__________________________________________
impossible is only a word

lalloburo Profilo | Newbie

grazie ancora e, scusa se sono gnucco...

dunque la mia query è la seguente:

REPLACE(nomecampo, 'MILANO', 'TORINO')

ma mi dice "Messaggio 4104, livello 16, stato 1, riga 2
Impossibile associare l'identificatore in più parti "nomecampo"."

ho anche provato a scriverlo col percorso completo (dbo.nometabella.nomecampo) ma nulla.
evidentemente mi manca una parte davanti o dietro?

boh... sono nelle tue mani (porta pazienza)

dinoxet Profilo | Senior Member

dunque la query è la seguente:

UPDATE TABELLA SET NOMECAMPO = REPLACE(nomecampo, 'MILANO', 'TORINO')

UNA COSA DEL GENERE




DINOXET
__________________________________________
impossible is only a word

lalloburo Profilo | Newbie

sei ufficialmente il mio salvatore. Appena posso ti recapito una torta e pasticcini a profusione per sei anni!!!!
Scherzi a parte.... Grazie mille!!

a presto
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5