Modifica parziale campo nvarchar(MAX)

giovedì 07 aprile 2011 - 11.40
Tag Elenco Tags  SQL Server 2008 R2

lalloburo Profilo | Newbie

ciao,
ho un campo nvarchar(MAX) in cui ho una serie di valori inseriti come posso rintracciarne uno e sostituirlo lasciando invariato il resto del contenuto? Se faccio:
UPDATE tabella
SET campoTabella = N'xxxx'
WHERE (campoTabella LIKE '%2222%')

mi trova il campo e me lo sostituisce con il valore nuovo, io invece vorrei che mi sostituisse solo il valore e non toccasse il resto.
Spero di essermi spiegato. Magari per voi è banale, ma io non riesco a trovare una soluzione.
Grazie a tutti.
ciao

lbenaglia Profilo | Guru

>ho un campo nvarchar(MAX) in cui ho una serie di valori inseriti
>come posso rintracciarne uno e sostituirlo lasciando invariato
>il resto del contenuto? Se faccio:
>UPDATE tabella
>SET campoTabella = N'xxxx'
>WHERE (campoTabella LIKE '%2222%')
>
>mi trova il campo e me lo sostituisce con il valore nuovo, io
>invece vorrei che mi sostituisse solo il valore e non toccasse
>il resto.

Ciao,

Il pattern è univoco per colonna oppure viene ripetuto in più punti della stringa?

>Grazie a tutti.
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

lalloburo Profilo | Newbie

nel campo c'è una volta sola, potrebbe esserci altre volte in altri record. In poche parole vorrei un comando che faccia ciò che in access è il trova e sostituisci tutto. In quel campo, via asp, faccio depositare delle ID separate da virgole. é possibile che io debba sostituire, nella sequenza, tutte le 2222 in 3333 ad esempio

lbenaglia Profilo | Guru

>faccio depositare delle ID separate da virgole.
Ma che brutto
Una soluzione del genere non rispetta nemmeno la prima forma normale.

Quello che chiedi è fattibilissimo mediante le funzioni stringa PATHINDEX(), LEN() e STUFF() ma ti invito caldamente a rivedere lo schema del db, normalizzandolo fino alla terza forma.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/

dinoxet Profilo | Senior Member

prova ad usare la
replace()


DINOXET
__________________________________________
impossible is only a word
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