Запуск XQuery для текстового поля, которое было от CAST до XML - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь использовать XQuery для текстовых данных, которые я привел к XML, но безуспешно. Так что это терпит неудачу:

    DECLARE @myDoc TEXT  
    SET @myDoc = '<Root>  
    <ProductDescription ProductID="1" ProductName="Road Bike">  
    <Features>  
      <Warranty>1 year parts and labor</Warranty>  
      <Maintenance>3 year parts and labor extended maintenance is available</Maintenance>  
    </Features>  
    </ProductDescription>  
    </Root>'  

SELECT CAST(@myDoc AS XML)('(/Root/ProductDescription/@ProductID)[1]', 'int' )  

, но это успешно:

DECLARE @myDoc xml  
DECLARE @ProdID int  
SET @myDoc = '<Root>  
<ProductDescription ProductID="1" ProductName="Road Bike">  
<Features>  
  <Warranty>1 year parts and labor</Warranty>  
  <Maintenance>3 year parts and labor extended maintenance is available</Maintenance>  
</Features>  
</ProductDescription>  
</Root>'  

SELECT  @myDoc.value('(/Root/ProductDescription/@ProductID)[1]', 'int' )  

1 Ответ

0 голосов
/ 27 января 2020

Я понял, о чем говорил Дэвид Браун, это работает:

DECLARE @myDoc NVARCHAR(MAX)  
DECLARE @ProdID int  
SET @myDoc = '<Root>  
<ProductDescription ProductID="1" ProductName="Road Bike">  
<Features>  
  <Warranty>1 year parts and labor</Warranty>  
  <Maintenance>3 year parts and labor extended maintenance is available</Maintenance>  
</Features>  
</ProductDescription>  
</Root>'  

SELECT CAST(@myDoc AS XML).value('(/Root/ProductDescription/@ProductID)[1]', 'int' )    
...