2017-05-26 10 views
1

鮮明我有一個SQL表如下:SQL對XML

AID | BID | STIME  | XML     | PKEY 
1234 | 5678 | 2012-04-12 | <XML>duplicate</XML> | 34555 
1234 | 5678 | 2012-04-12 | <XML>duplicate</XML> | 34555 
1593 | 5847 | 2012-03-13 | <XML>valid</XML>  | 89564 

有重複的行,我需要消除它們。我的最終目標是獲取XML行(它是XML數據類型)concat XML列並從我的C#應用​​程序拉。

在SQL水平我曾嘗試以下:

Select Distinct XML from Table 
where AID = '1234' 
for XML Auto 

我得到一個錯誤:

THe XML data type cannot be selected as DISTINCT because it is not comparable

+2

'DISTINCT CONVERT(NVARCHAR(MAX),XML)'。當然,效率不高。根據您的數據,切碎您的XML和DISTINCT,可能會更快。 –

+0

我可以請求請提供一個簡要示例 – user726720

+0

在您的示例中,重複的XML行也在其他列中重複。你能比較所有其他列,並消除重複的基礎上? – 2017-05-26 15:51:57

回答

1

只是爲了上的Jeroen Mostert的意見擴大

Select XML = convert(XML,AsString) 
From (
     Select Distinct AsString = convert(nvarchar(max),XML) 
     From YourTable 
     Where AID = '1234' 
    ) A 

返回XML作爲

<XML>duplicate</XML> 
+0

嗨,這段代碼不起作用。我試過了Jeroen的代碼,但這並不行。它給了我一個錯誤。 – user726720

+0

@ user726720給出你的示例數據它工作。只是好奇什麼是錯誤? –

+0

@ user726720這實際上是經過測試的,因爲我從來沒有選擇不同的XML,所以我很好奇。因此,對你的問題upvote ....這是獨一無二的。 –