Table è chiamato come MasterTable
Sql query XQuery Come sostituire testo in Query di aggiornamento
Colonne
ID
tipo BIGINT
,
Name
tipo VARCHAR(200)
(negozi xml
Tipo di dati per alcuni motivi)
Name
contiene dati strutturati come
<en-US>SomeEnglishText</en-US><it-IT>SomeItalicText</it-IT>
Quando ho bisogno di Update
Tavola Master
poi in quel momento ho bisogno di lanciare il Varchar
-xml
poi condizionale aggiornamento/sostituzione la value
parte del particolare tag cioè sia en-US/it-IT
.
Inoltre ci sono possibilità che Nessun dati/tag ci sono in Name
colonna quindi penso che al momento dell'inserimento dei dati sarebbe Insert
elementi tag vuoti nella tabella come <en-US></en-US><it-IT></it-IT>
, in modo che la query update
deve gestire valore vuoto in elementi di tag ossia en-US/it-IT
.
Sto provando a farlo come dopo la query di aggiornamento.
DECLARE @Str VARCHAR(200)
SET @Str = 'Test Text'
UPDATE [MasterTable]
SET [Name] = cast([MasterTable].[Name] as xml).modify('replace value of (en-US/text())[1] with sql:variable("@Str")')
WHERE [ID]=18
ho ottenere seguente errore quando si esegue la query
uso illegale di metodo di tipo di dati xml 'modificare'. Un metodo non mutante è previsto in questo contesto.
avevo cambiato questo 'dichiarare @str varchar (200) = 'Test'' a' dichiarare @str varchar (200) set @str =' Test'' e ha funzionato .. Grazie a lot –
Puoi dire come fare se il codice precedente era 'COALESCE (@Name, Nome)' e ora voglio cambiarlo come 'UPDATE MasterTable set Nome = Nome.modifica ('sostituisci valore di (en-US/testo()) [1] con sql: variabile ("@ Str") ') dove ID = 18' in modo simile ie handle NULL in @Str –
Anche come la colonna 'Name' è' VARCHAR (200) ' quindi sto affrontando il problema di chiamare direttamente 'modify' su di esso –