0

SQL から varchar に格納された xml データを取得するのと同様に、列に格納されている XML 文字列から値を抽出する必要がありVARCHARます。

ただし、データは SQL Server 2000 上にあるため、XML タイプは使用できません。

これは SQL Server 2000 で可能ですか?

たとえば、次の XML の場合、<status>ノードの値を選択するにはどうすればよいですか。

<entities>
    <entity>
        <name>foo</name>
        <status>1</status>
    </entity>
    <entity>
        <name>bar</name>
        <status>2</status>
    </entity>
</entities>
4

3 に答える 3

2

これを試して:

declare @xml varchar(1000)
SET @xml='<entities>
    <entity>
        <name>foo</name>
        <status>1</status>
    </entity>
    <entity>
        <name>bar</name>
        <status>2</status>
    </entity>
</entities>'
select @xml,SUBSTRING(@xml,CHARINDEX('<status>',@xml)+LEN('<status>'),(CHARINDEX('</status>',@xml)-(CHARINDEX('<status>',@xml)+LEN('<status>'))))
于 2012-09-12T10:54:43.803 に答える
1

openxmlがあなたの問題に対する最良の解決策だと思います。

DECLARE @xml VARCHAR(2000)
SET @xml = N'
<entities>
    <entity>
        <name statue="1">foo</name>
        <status>1</status>
    </entity>
    <entity>
        <name statue="2">bar</name>
        <status>2</status>
    </entity>
</entities>
'

DECLARE @docHandle int
EXEC sp_xml_preparedocument @docHandle OUTPUT, @xml


SELECT *
   FROM OPENXML(@docHandle, N'/entities/entity',2)
WITH (name VARCHAR(20), status INT)
于 2012-09-12T11:34:19.930 に答える
1

OPENXMLを使用できます。ドキュメントの例を特定のケースに適応させることはそれほど難しくありません。

于 2012-09-12T10:49:09.097 に答える