我需要將純文本列中的數據轉換爲xml列。但是,並非所有內容都是有效的XML,所以我需要忽略具有無效XML的任何行。有沒有一種方法可以使用某種內聯條件轉換或WHERE子句中的某些內容過濾掉無效數據?SQL Server:使用XML進行內聯條件轉換?
1
A
回答
1
聽起來你需要爲XML數據提供ISNUMERIC函數的一個版本。
遺憾的是沒有這樣的內置函數存在 - 所以你必須設計出你自己的選擇,對其中有幾個選項:
如果這是一個一次性的或小規模的過程,其性能不是關鍵的,你可以在裏面光標每次處理的輸入表一排,用TRY...CATCH
塊來處理無效的類型轉換(未經測試):或者
DECLARE xmlCur CURSOR FOR
SELECT textcol
FROM inputTable
OPEN xmlCur
DECLARE @string nvarchar(MAX)
DECLARE @xml xml
FETCH NEXT FROM xmlCur into @string
WHILE @@fetch_status = 0
BEGIN
BEGIN TRY
SET @xml = CAST(@string AS XML)
-- Do something with XML
END TRY
BEGIN CATCH
-- log failure/mark source row as invalid
END CATCH
FETCH NEXT FROM xmlCur into @string
END
CLOSE xmlCur
DEALLOCATE xmlCur
,如果你熟悉的.Net編程(並在您的服務器上啓用它),您可以使用CLR來創建您自己的IsXML函數。 .Net代碼將不會比this thread上的第三個帖子複雜得多。
CLR解決方案的性能可能不如遊標更好 - 您需要測試以確定這一點。
(一個顯而易見的嘗試,它不起作用,是一個標量值T-SQL函數,它試圖在TRY...CATCH
塊內將字段轉換爲XML,但TRY...CATCH
在函數內部是不允許的。
+0
遊標解決方案就是我已經完成的,所以榮譽:D – 2009-09-15 15:19:33
相關問題
- 1. SQL Server - 添加條件內部聯接
- 2. 使用XSLT轉換內聯XML元素
- 3. SQL Server:條件級聯
- 4. 需要將SQL Server xml blob轉換爲表格進行操作
- 5. 在SQL Server中使用替換條件查詢XML數據
- 6. 使用有條件禁用的控件進行內聯編輯
- 7. 使用XSLT進行XML到CSV轉換
- 8. 使用XSLT2進行XML轉換分組
- 9. 使用XSLT進行XML轉換
- 10. 使用XSLT進行XML轉換
- 11. 使用Jython進行XML XSLT轉換
- 12. 使用XSL進行XML轉換
- 13. 使用XSLT進行XML轉換
- 14. 使用xsl進行XML轉換
- 15. 使用SQL Server/Reporting Services進行日期轉換
- 16. 使用替代命名空間在XML內進行XSL轉換
- 17. 使用XML Schema進行條件驗證
- 18. SQL Server使用視圖上的條件進行計數
- 19. 將Crystal Reports條件轉換爲SQL Server條件
- 20. 轉換行與列WHERE條件SQL Server 2008中
- 21. 使用SQL進行表格轉換
- 22. 使用SQL Server進行羣發郵件
- 23. 轉換列行和SQL Server
- 24. 轉換列行的SQL Server
- 25. 使用XSLT根據節點數量對條件進行XML轉換
- 26. SQL Server進程隊列爭用條件
- 27. 轉換XML到表中的SQL Server 2005
- 28. 將XML轉換爲SQL Server數據庫
- 29. SQL Server將XML轉換爲JSON
- 30. 轉換sql server文件
什麼版本的SQL Server? – 2009-09-14 23:49:20
SQL 2005 15char – 2009-09-15 00:10:07