Выберите запрос SQL, чтобы получить значения узла xml из столбца ntext? - PullRequest
3 голосов
/ 13 сентября 2011

Я хочу получить одно значение узла xml из столбца NTEXT, который содержит xml, основываясь на запросе where для другого значения узла xml. Тип СУБД: Microsoft SQL Server T-SQL Здесь: я хочу получить значение узла кода на основе StoreId, где значение предложения. Как мне это получить? Вход: 100 Выход: ABCDE

Например:

<root>
  <StoreProfile>
    <General>
     <StoreId>100</StoreId>
     <Code>ABCDE</Code>
    </General>
  </StoreProfile>
</root>

1 Ответ

6 голосов
/ 13 сентября 2011

Если вы используете SQL Server 2005 или 2008, вы можете использовать XQuery следующим образом:

Подробнее о XQuery см. Справочник по языку XQuery

DECLARE @storeId INT
SET @storeId = 100

CREATE TABLE #TestTable
(
    xmlColumn NTEXT
)

INSERT INTO #TestTable (xmlColumn) Values('<root><StoreProfile><General><StoreId>100</StoreId><Code>ABCDE</Code></General></StoreProfile></root>')
INSERT INTO #TestTable (xmlColumn) Values('<root><StoreProfile><General><StoreId>200</StoreId><Code>FGHIJ</Code></General></StoreProfile></root>')

SELECT 
    StoreProfile.value('Code[1]', 'nvarchar(10)') as Code 
FROM #TestTable
    CROSS APPLY (SELECT CAST(xmlColumn AS XML)) AS A(B) 
    CROSS APPLY A.B.nodes('//root/StoreProfile/General[StoreId = sql:variable("@storeId")]') AS StoreProfiles(StoreProfile)

DROP TABLE #TestTable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...