我有一些表示數學表達式樹的XML數據並希望將其轉換爲平坦的數學公式。聽起來很簡單,但SQL Server中的XQuery限制目前阻止我成功(沒有遞歸函數,「異構」結果等問題)。使用SQL Server 2008 XQuery將XML樹轉換爲平面文本
表達式可以是任意的嵌套深度。下面是一個示例(該數據在一個表中的XML列以後,但這是不夠好測試這裏):
DECLARE @expr xml;
SET @expr = '<expression aggregator="+">
<indicator>122F277B-A241-7944-BC38-3BB5E8B213AF</indicator>
<indicator>7DD46849-2193-EB41-8BAB-CE0C45255249</indicator>
<expression aggregator="*">
<expression aggregator="/">
<indicator>122F277B-A241-7944-BC38-3BB5E8B213AF</indicator>
<indicator>27F3156D-FDA7-1E44-B545-7F27A48D9838</indicator>
</expression>
<indicator>ADFCEF34-9877-DE4E-8A00-13576437D82B</indicator>
<value>12</value>
</expression>
<expression aggregator="-">
<indicator>ADFCEF34-9877-DE4E-8A00-13576437D82B</indicator>
<indicator>75896474-C197-1C44-8EAA-8FE9D0AB2663</indicator>
</expression>
<indicator>27F3156D-FDA7-1E44-B545-7F27A48D9838</indicator>
</expression>';
所需的結果將是(空白是微不足道的):
(
[122F277B-A241-7944-BC38-3BB5E8B213AF] +
[7DD46849-2193-EB41-8BAB-CE0C45255249] +
(
(
[122F277B-A241-7944-BC38-3BB5E8B213AF]/
[27F3156D-FDA7-1E44-B545-7F27A48D9838]
) *
[ADFCEF34-9877-DE4E-8A00-13576437D82B] *
12
) +
(
[ADFCEF34-9877-DE4E-8A00-13576437D82B] -
[75896474-C197-1C44-8EAA-8FE9D0AB2663]
) +
[27F3156D-FDA7-1E44-B545-7F27A48D9838]
)
有人能夠很好地掌握SQL Server 2008(R2)中的XQuery來執行此轉換嗎?
您不能處理未定義deph樹不一般的遞歸。這就是爲什麼這個XQuery引擎有它自己的標籤... – 2011-04-20 22:03:26
@Alejandro,抱歉沒有收到這個標籤,感謝編輯。 – Lucero 2011-04-20 23:56:05