2011-08-08 4 views
0

xmlのように見えるSQLテーブルにフィールドがあります。私はフィールドを取得するためにそれを解析する必要があります。私は[2 RIVERSコントラ事前に助けをxmlのように見えるSQLでフィールドを解析する必要があります

おかげCDATAなどの分野を引き出すために必要

<?xml version="1.0" encoding="utf-8"?> 
<Vendor> 
    <Vendor_ID><![CDATA[2 RIVERS CONTRA]]></Vendor_ID> 
    <Vendor_Name><![CDATA[2 RIVERS CONTRACTING & SERVICES, INC.]]></Vendor_Name> 
    <Vendor_Contact><![CDATA[]]></Vendor_Contact> 
    <Phone><![CDATA[0     ]]></Phone> 
    <Address><![CDATA[P.O. BOX 1512 ]]></Address> 
    <City><![CDATA[ARLINGTON]]></City> 
    <State><![CDATA[MA]]></State> 
    <Country><![CDATA[]]></Country> 
</Vendor> 

:ように見えます。

+0

質問があまりにも少ない特定のコンテンツが含まれています。 –

+0

申し訳ありませんがコードを初めて使用しませんでした。ありがとう – user883288

+1

{}ボタンを使用して読みやすいコードを作成してください...しかし依然として私には意味がありません。正確に何を引き出しようとしていますか、どの基準に基づいていますか? –

答えて

1

XMLのように見えるだけでなく、 XMLです。

テーブルの列がXMLデータ型の列の場合、このような値を取得できます。

select XMLCol.value('(/Vendor/Vendor_ID)[1]', 'varchar(50)') as Vendor_ID 
from YourTable 

varchar/nvarchar列の場合は、最初にXMLにキャストする必要があります。

select cast(XMLCol as xml).value('(/Vendor/Vendor_ID)[1]', 'varchar(50)') as Vendor_ID 
from YourTable 

ワーキングサンプル:

declare @YourTable table (XMLCol varchar(max)) 

insert into @YourTable values 
('<?xml version="1.0" encoding="utf-8"?> 
    <Vendor> 
    <Vendor_ID><![CDATA[2 RIVERS CONTRA]]></Vendor_ID> 
    <Vendor_Name><![CDATA[2 RIVERS CONTRACTING & SERVICES, INC.]]></Vendor_Name> 
    <Vendor_Contact><![CDATA[]]></Vendor_Contact> 
    <Phone><![CDATA[0     ]]></Phone> 
    <Address><![CDATA[P.O. BOX 1512 ]]></Address> 
    <City><![CDATA[ARLINGTON]]></City> 
    <State><![CDATA[MA]]></State> 
    <Country><![CDATA[]]></Country> 
    </Vendor>') 

select cast(XMLCol as xml).value('(/Vendor/Vendor_ID)[1]', 'varchar(50)') as Vendor_ID 
from @YourTable 

結果:

Vendor_ID 
---------------- 
2 RIVERS CONTRA 
関連する問題