有人能帮我在T-SQL(SQL Server 2005)中解析以下XML吗?
我尝试了以下内容:
但是它没有起到作用,我得到了以下结果:
<Tx>
<T>1</T>
<C>1</C>
<T>2</T>
<C>1</C>
<T>3</T>
<C>1</C>
<T>4</T>
<C>1</C>
</Tx>
我尝试了以下内容:
SELECT
Tx.query('T').value('.', 'varchar(10)') AS [Column 1],
Tx.query('C').value('.', 'varchar(10)') AS [Column 2]
FROM @MyXml.nodes('Tx') x(Tx)
但是它没有起到作用,我得到了以下结果:
Column 1 Column 2
-------- --------
1234 1111
期望达到的目标是:
Column 1 Column 2
-------- --------
1 1
2 1
3 1
4 1
这个字符串显然是一个有效的XML,但它对于T-SQL来说是否有效?
如果有人可以提供一个解释XML在T-SQL中如何工作的参考资料,我也会非常感激。
提前感谢。
C
匹配到一个T
。是不是匹配的值之间互相配对很重要,或者只是随意选择任何值都可以? - Mikael ErikssonINSERT INTO MyTable2 (SomeColumn, SomeOtherColumn) SELECT A.[Column 2], B.AnotherColumn FROM @xmlTable A JOIN MyTable1 B ON A.[Column 1] = B.Id
。 - TheBlueSkyC
的值始终为1
。一个 XML 中所有C
的值只会有一个不同的值吗? - Mikael ErikssonC
与T
相比具有非常少的不同值。 - TheBlueSkyT
的第一个值与C
的第一个值配对,将T
的第二个值与C
的第二个值配对,以此类推......?T
的数量可以比C
多,也可以比C
少。两个或更多连续的T
之间是否可能没有C
,或者反过来呢?使用数字表格可以在position
上执行XQuery。我可以提供这样做的答案,但我想知道配对T
和C
的规则。顺便说一句,@marc-s是正确的,当他说您应该重新设计您的XML时。 - Mikael Eriksson