tabla se denomina como MasterTable
SQL Xquery Cómo reemplazar texto en Consulta de actualización
Columnas
ID
tipo BIGINT
,
Name
tipo VARCHAR(200)
(tiendas xml
Tipo de datos por algunas razones)
Name
contiene datos estructurados como
<en-US>SomeEnglishText</en-US><it-IT>SomeItalicText</it-IT>
Cuando necesito Update
la Tabla Master
entonces en ese tiempo que necesito para emitir el Varchar
-xml
entonces condicionalmente actualización/reemplazar la parte value
de etiqueta en particular es decir, ya sea en-US/it-IT
.
También hay posibilidades de que Sin datos/etiquetas hay en Name
columna así que creo que en el momento de la inserción de datos sería Insert
elementos de etiqueta vacía en la mesa como <en-US></en-US><it-IT></it-IT>
, por lo que la consulta update
debe manejar valor vacío en elementos de etiqueta es decir en-US/it-IT
.
Intento hacerlo como si fuera una consulta de actualización.
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
que conseguir siguiente error cuando se ejecuta la consulta
El uso ilegal de método de tipo de datos xml 'modificar'. Se espera un método no mutador en este contexto.
me habían cambiado esta 'declarar @str varchar (200) = '' Test'' a declarar @str varchar (200) conjunto @str =' Test'' y ha funcionado .. Muchas gracias –
¿Puedes decirme cómo hacerlo si el código anterior era 'COALESCE (@Name, Name)' y ahora quiero cambiarlo como 'UPDATE MasterTable set Name = Name.modify ('replace value of (en-US/text)()) [1] con sql: variable ("@ Str") ') donde ID = 18' del mismo modo es decir, manipular valores NULL en @Str –
También como la columna 'Name' es' VARCHAR (200) ' así que estoy enfrentando el problema de llamar directamente a 'modificar' en él –