2013-03-05 53 views
0

我有一個包含一個存儲格式良好的XML稱爲custom_fields屬性表:如何在SQL Server 2005中將文本屬性解析爲xml屬性?

<Root> 
    ... 
    <TotalMontoSoles></TotalMontoSoles> 
    ... 
</Root> 

但這種屬性不存儲爲XML數據類型,而不是它的存儲爲文本。我需要做的是設置TotalMontoSoles價值,我試圖通過使用XML-DML的修改方法來實現這一目標,但我不斷收到一個

錯誤SQL:從XML數據類型顯式轉換爲文本不允許。

錯誤,當我試圖將列鑄造成一個XML類型:

DECLARE @custom_fields xml 
SET @custom_fields = (SELECT CAST(custom_fields as XML) FROM UPLOAD_HEADER_TEMPORAL 
@custom_fields.modify('...') 

我在做什麼錯?有沒有其他辦法可以實現這個目標?

UPDATE:

也許它指出的是,我想在這裏做的是創建一個過程是重要的,在編譯時我得到這個錯誤。

+0

它看起來像你的轉換到XML是失敗的地方。錯誤消息告訴你這個問題。您的文本列不能奇蹟般地轉換爲xml。 – 2013-03-05 16:51:08

+0

在這種情況下,我應該如何着手發現問題?我不認爲這不是一個格式良好的XML,因爲我已經在sql外部(特別是在Java中)鑄造了xml – 2013-03-05 16:53:10

+0

@NickDeVore另外,我創建了一個過程,所以sql甚至不知道xml是怎麼樣的。這是一個編譯時間錯誤。 – 2013-03-05 16:55:41

回答

1

無法將文本列數據類型轉換(轉換)爲XML。您可以(應該)使用其中一種varchar類型。 Microsoft將在未來某個時候刪除文本(和圖像)數據類型。

http://msdn.microsoft.com/en-us/library/ms187993%28v=sql.90%29.aspx

的ntext,文本和圖像數據類型將在Microsoft SQL Server的未來版本中刪除。避免在新的開發工作中使用這些數據類型,並計劃修改當前正在使用它們的應用程序。改爲使用nvarchar(max),varchar(max)和varbinary(max)。

+0

我所做的就是將這個列先轉換成一個varchar,然後再轉換成一個XML。它似乎運作良好。 – 2013-03-05 17:06:21

+0

太好了。很高興我幫了忙。 – 2013-03-05 17:08:11

+0

@DanielCalderonMori謹慎地將其標記爲答案? – 2013-03-05 17:38:46