2011-01-05 38 views
18

trong MS Sql có các kiểu dữ liệu không được hỗ trợ bởi delphi 7, kiểu dữ liệu xml là một ví dụ.ms sql xml kiểu dữ liệu chuyển đổi thành văn bản

Tôi muốn chuyển đổi kiểu dữ liệu XML thành Kiểu dữ liệu văn bản, để tôi có thể xử lý nó trong delphi.

Có cách nào để chuyển đổi từ xml thành văn bản không?

Trả lời

33

Một dàn diễn viên đơn giản là đủ:

select cast(XMLCol as nvarchar(max)) as XMLCol 

Hoặc cho phi unicode:

select cast(XMLCol as varchar(max)) as XMLCol 

Bạn không thể chuyển đổi một cách rõ ràng để một 'text' kiểu dữ liệu.

Tôi đã thêm as XMLCol để đảm bảo rằng dữ liệu được chuyển đổi có cùng tên với cột. Bạn không cần phải có điều này, tất nhiên.

EDIT:

Một số liên kết. Bạn được khuyến khích sử dụng nvarchar (tối đa) thay vì text bất kể. Microsoft cho biết họ sẽ không dùng các loại này trong các phiên bản tương lai. nvarchar (max) phải cung cấp cho bạn 2GB:

http://www.petefreitag.com/item/734.cfm

http://www.teratrax.com/articles/varchar_max.html

http://msdn.microsoft.com/en-us/library/ms187752(v=SQL.90).aspx

+0

vấn đề với varchar là giới hạn x byte, mà không phải là trường hợp cho xml. – none

+2

Bạn đang sử dụng phiên bản SQL nào. nvarchar (tối đa) sẽ cung cấp cho bạn tối đa 2GB. –

+0

sau khi tìm kiếm nhanh, có sự khác biệt giữa chỉ định varchar (5000) và varchar (tối đa) – none

8
SELECT CAST(YourXMLColumn as nvarchar(max)) 
    FROM YourTable 
+0

Đây là những gì tôi thường làm, nó rất sạch sẽ, dễ nhớ, khó có thể mess lên :) – Squazz

Các vấn đề liên quan