2013-07-25 137 views
3

我在Sql服務器中有一個表,它在其中一列中存儲了Xml數據。 XML列的數據是這樣的:在列中從Xml中提取值

<TestDef Weight="0" FailValue="2" ConceptID="-327"> 
    <ToleranceDef ObjectType="SomeName" TargetValue="0"TargetRange="2" /> 
</TestDef> 

我需要編寫獲取了從各行的XML列的所有conceptId的查詢。 這將是-327

我知道我能投XML列的爲nvarchar(最大),然後使用一些REG EXP獲得價值,但不知道如何使用正則表達式

回答

5

下面是一個例子使用表變量。這將是相同的概念,實際的表:

Declare @XmlTable table (
    Id Integer Identity, 
    XmlValue XML 
) 

Insert Into @XmlTable (XmlValue) values ('<TestDef Weight="0" FailValue="2" ConceptID="-327"><ToleranceDef ObjectType="SomeName" TargetValue="0" TargetRange="2" /></TestDef>') 
Insert Into @XmlTable (XmlValue) values ('<TestDef Weight="0" FailValue="2" ConceptID="-325"><ToleranceDef ObjectType="SomeName" TargetValue="0" TargetRange="2" /></TestDef>') 


select 
    Id, 
    XmlValue, 
    XmlValue.value('(/TestDef/@ConceptID)[1]', 'integer') as ConceptId 
from 
    @XmlTable 
+1

,而不是使用您的演示表varible你可能想嘗試[SQL小提琴(http://sqlfiddle.com/#!6/290e5/ 1) –

+0

感謝您的提示,絕對看起來像一個有用的網站! –