CONVERTIR SQL NVARCHAR (MAX) A XML y obtener un valor de una cadena XML
Estoy intentando leer desde los nodos de una columna, donde se almacena una cadena XML. La columna es de tipo NVARCHAR (MAX).
El siguiente es el script para crear la tabla: SET ANSI_NULLS ON GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[XML_Dummy](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NULL,
[XMLValue] [nvarchar](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
El siguiente es el script para ingresar valores:
INSERT INTO [dbo].[XML_Dummy]
([Name]
,[XMLValue])
VALUES
('abcd'
,'<?xml version="1.0" encoding="UTF-8"?>
<STAFFv xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<EMPLOYEE_NUMBER>123456</EMPLOYEE_NUMBER>
<TITLE>Mr</TITLE>
<INITIALS>J</INITIALS>
<FORENAME>PEARL</FORENAME>
<SURNAME>HOFFMAN</SURNAME>
<GENDER>MALE</GENDER>
<DATE_OF_BIRTH>1992-01-01</DATE_OF_BIRTH>
<DEPARTMENT_DESC>SUPER SUPPORT TEAM</DEPARTMENT_DESC>
<JOB_TITLE_DESC>GENERAL DOGSBODY</JOB_TITLE_DESC>
<ORIGINAL_DATE_JOINED>2014-05-01</ORIGINAL_DATE_JOINED>
<CURRENT_EMPLOYEE financialyear="2014">Y</CURRENT_EMPLOYEE>
<INTERNAL_EMAIL xsi:nil="true" />
<CHANGE_TYPE>INSERT</CHANGE_TYPE>
<CHANGE_DATE>2014-03-27</CHANGE_DATE>
</STAFF>')
GO
Mi objetivo es obtener el GÉNERO de esta cadena. Sin embargo, para comenzar cuando estoy escribiendo la siguiente consulta:
declare @XMLVALUECAST_ xml
declare @XMLVALUECONVERT_ xml
SELECT
@XMLVALUECAST_ = CAST(XMLValue AS XML),
@XMLVALUECONVERT_ = CONVERT(XML, XMLValue)
--CAST(CAST(CAST(XMLValue AS NTEXT) AS XML).query('data(/STAFF/GENDER)') AS VARCHAR(10)) AS Gender
FROM
[dbo].[XML_Dummy]
print @XMLVALUECAST_
PRINT @XMLVALUECONVERT_
Recibo el error: Mensaje 9402, Nivel 16, Estado 1, Análisis de línea de XML de línea 3: línea 1, carácter 38, no se puede cambiar la codificación.
Estoy usando SQL Server 2012 (11.0.5058.0)