2011-01-05 3 views
18

in MS Sql ci sono tipi di dati che non sono supportati da delphi 7, il datatype xml è un esempio.ms sql xml data type convert to text

Desidero convertire il tipo di dati XML in tipo di dati di testo, in modo da poterlo gestire in delphi.

C'è un modo per convertire da xml in testo?

risposta

33

Un semplice cast sarà sufficiente:

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

O per non Unicode:

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

Non è possibile convertire in modo esplicito a un tipo di dati 'testo'.

Ho aggiunto il as XMLCol per garantire che i dati convertiti abbiano lo stesso nome della colonna. Non è necessario averlo, ovviamente.

EDIT:

Qualche link. Si consiglia di utilizzare nvarchar (max) al posto di text indipendentemente. Microsoft ha dichiarato che ritirerà questi tipi nelle versioni future. nvarchar (max) dovrebbe propone 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

il problema con varchar è il limite di x byte, che non è il caso di xml. – none

+2

Quale versione di SQL stai usando. nvarchar (max) dovrebbe offrire fino a 2 GB. –

+0

dopo una ricerca rapida, c'è una differenza tra la specifica di varchar (5000) e varchar (max) – none

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

Questo è quello che faccio di solito, è così pulito, facile da ricordare, difficile sconvolgerà :) – Squazz