2010-08-18 3 views
0

В базе данных есть таблица EMP с 3 столбцами empID, badgID, XMLDATA.Как читать атрибут XML из таблицы?

XMLDATA имеют тип данных «CLOB» и данные в форме -

<Record id="11"> 
    <Demo rID="5"/> 
</Record> 

Как я могу прочитать атрибут «Rid» в узле значение «Demo» в приведенном выше XMLDATA в одном запросе?

сервера - SQL Server 2005

+1

Если вы разместите код или XML, ** пожалуйста ** выделить эти строки в текстовом редакторе и нажмите на кнопку «код» (101 010) на панели инструментов редактора, чтобы красиво форматировать и синтаксис выделить его! –

+1

Каков фактический тип данных? Насколько я знаю, 'clob' не является типом данных SQL Server. –

+0

Серьезно - тип данных "CLOB" ?? Насколько мне известно, SQL Server этого не имеет - у нас есть «IMAGE, TEXT, NTEXT» (все устаревшие), а затем «(N) VARCHAR (MAX)» или «VARBINARY (MAX)» или «XML» - так что это действительно ??? –

ответ

2

Если ваши данные хранятся с типом данных XML в SQL Server, то вы можете сделать это:

SELECT 
    empID, badgID, 
    XmlData.value('(/Record/Demo/@rID)[1]', 'int') as 'rID' 
FROM 
    dbo.YourTable 

Если тип данных не XML - это на самом деле должно быть! Вы, возможно, придется использовать что-то вроде этого (может не работать во всех случаях):

SELECT 
    empID, badgID, 
    (CAST XmlData AS XML).value('(/Record/Demo/@rID)[1]', 'int') as 'rID' 
FROM 
    dbo.YourTable 
+0

Спасибо. Я пробовал оба запроса, он терпит неудачу и говорит: «Схема XMLDATA не существует». Но столбец XMLDATA присутствует в таблице. – indigenious

+0

@indigenious: можете ли вы показать нам фактическую структуру таблицы, например. диаграмма базы данных или что-то ??? –

+0

Мои извинения, я только прочитал доступ к базе данных и не знаю об архитектуре. – indigenious

Смежные вопросы