2011-09-12 12 views
3

別のxmlノード値でwhere節を調べることに基づいてxmlを含むNTEXT列から1つのxmlノード値を取得したいとします。 RDBMSタイプ:Microsoft SQL Server T-SQL ここではStoreId where句の値に基づいてコードノードの値を取得します。どうすれば入手できますか? 入力:100 出力:例えばABCDESQLクエリを選択して、ntext列からxmlノード値を取得しますか?

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

どのdbmsを使用していますか。いくつかのSQL方言には特定のXMLプリミティブがあります。 – SingleNegationElimination

+0

作業しているデータベースを定義します。 –

答えて

6

あなたはSQL Server 2005または2008を使用している場合は、そのようにXQueryを使用することができます。

のXQueryの詳細についてXQuery Language Reference

を見ます
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 
+2

+1しかしNTEXTからxmlへのキャストを含めることには害はありません –

+0

+1ありがとうございます! – msmucker0527

関連する問題