2017-11-15 2 views
0

内のノードの値を取得:私は、このXMLから「RID」ノードを取得したいXMLにntext型の列に変換し、SQL

<ts:Status xmlns:ts="DistServices"> 
<RID> 
5ec827e9-0429-4f5a-9d4b-16d3503ff07b 
</RID> 
<PIN> 
5678 
</PIN> 
</ts:Status> 

私はSQLサーバー2012年に次のクエリを使用しています:

DECLARE @data xml 
DECLARE @RID varchar(256) 
select @data = CAST(CAST(Data AS text) AS XML) from message where index=1 
select @data 
SET @RID = @data.value('(/ReplicationStatus/RID)[1]', 'varchar(256)') 
SELECT @RID 

ここで、データはntextです。私はそれをntextからtextに、そしてxmlに2回キャストしました。今、私はXML形式で@データを取得しています。しかし、返されるRIDは常にnullです。誰かがこれで私を助けることができますか?

答えて

1

あなたはxmlntextデータを変換した後に試みることができる:

DECLARE @DATA XML = '<ts:Status xmlns:ts="DistServices"> 
<RID> 
5ec827e9-0429-4f5a-9d4b-16d3503ff07b 
</RID> 
<PIN> 
5678 
</PIN> 
</ts:Status>' 

SELECT 
     a.value('./RID[1]', 'NVARCHAR(MAX)') [RID], 
     a.value('./PIN[1]', 'NVARCHAR(MAX)') [PIN] 
     FROM @DATA.nodes ('*') as split(a) 

結果:

RID         PIN 
5ec827e9-0429-4f5a-9d4b-16d3503ff07b 5678 

注: 重要を! ntext、text、およびimageデータ型は、将来のバージョンのSQL Serverでは削除されます。新しい開発作業でこれらのデータ型を使用しないようにし、現在使用しているアプリケーションを変更することを計画します。代わりに、nvarchar(max)、varchar(max)、およびvarbinary(max)を使用してください。

それが働い読むhttps://docs.microsoft.com/en-us/sql/t-sql/data-types/ntext-text-and-image-transact-sql

+0

!ありがとう! –

関連する問題