【发布时间】:2014-08-10 13:29:45
【问题描述】:
在 SQL Server 中,我尝试查询具有 XML 列的表,该列内的 XML 类似于下面
DECLARE @XML AS XML
SET @XML =
'<Root>
<Stuff>
<InsideStuff>1</InsideStuff>
<InsideStuff>2</InsideStuff>
<StuffIDontWant>9</StuffIDontWant>
</Stuff>
<Stuff>
<InsideStuff>3</InsideStuff>
<InsideStuff>4</InsideStuff>
<StuffIDontWant>6</StuffIDontWant>
<StuffIDontWant>7</StuffIDontWant>
</Stuff>
</Root>'
SELECT TableAlias.ColumnAlias.value('(.)','nvarchar(max)')
FROM @XML.nodes('/Root/Stuff/InsideStuff') AS TableAlias(ColumnAlias)
上面的代码会给我 1,2,3,4 这是我想要的,但是我似乎不太明白如何将它变成我想要做类似事情的连接格式
SELECT T1.Name
FROM TableOne T1
INNER JOIN TableWithXml.ColumnWithXml.nodes('/Root/Stuff/InsideStuff') AS TableAlias(ColumnAlias) ON T1.ID = TableAlias(ColumnAlias)
在这种情况下我将如何格式化我的 T-SQL?
【问题讨论】:
-
@philip-loyer 为了理解这个问题,您希望根据该列的值是否包含“InsideStuff”,将具有“InsideStuffId”的表连接到另一个具有 XML 列的表中的条目具有给定值的条目?要加入的 XML 值是否需要具有多个具有相同名称的元素(即“InsideStuff”),还是应该只有一个?我相信这会使 XQuery 更容易。
-
在我的场景中,一个表的列具有一个整数值,我想将其连接到另一个表中的 xml 列上,该表在 xml 中有 4 个匹配的整数。我希望能够知道 xml 和另一个表中的整数是什么
标签: sql sql-server xml tsql