Преобразование SQL NVARCHAR (MAX) в XML и получение значения из XML-строки

Я пытаюсь прочитать из узлов столбца, где хранится строка XML. Столбец имеет тип NVARCHAR (MAX).

Ниже приведен скрипт для создания таблицы - 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

Ниже приведен скрипт для ввода значений в него -

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

Моя цель - получить ГЕНДЕРА из этой строки. Однако для начала, когда я пишу следующий запрос -

     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_

Я получаю сообщение об ошибке - сообщение 9402, уровень 16, состояние 1, строка 3, синтаксический анализ XML: строка 1, символ 38, невозможно переключить кодировку.

Я использую SQL Server 2012 (11.0.5058.0)

Ответы на вопрос(1)

Ваш ответ на вопрос