2011-01-05 14 views
18

in MS Sql gibt es datentypen, die nicht von delphi 7 unterstützt werden, der xml datentyp ist ein beispiel.ms sql xml datentyp konvertieren zu text

Ich möchte den XML-Datentyp in Text-Datentyp konvertieren, so dass ich es in Delphi behandeln könnte.

Gibt es eine Möglichkeit, von XML in Text zu konvertieren?

Antwort

33

Eine einfache Guss genügt:

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

Oder für Nicht-Unicode:

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

Sie konvertieren kann nicht explizit auf einen Typ 'Text' Daten.

Ich habe die as XMLCol hinzugefügt, um sicherzustellen, dass die konvertierten Daten den gleichen Namen wie die Spalte hat. Du brauchst das natürlich nicht.

EDIT:

Einige Links. Sie werden aufgefordert, nvarchar (max) anstelle von text unabhängig zu verwenden. Microsoft hat gesagt, dass sie diese Typen in zukünftigen Versionen ablehnen werden. nvarchar (max) sollten Sie 2GB bieten:

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

Das Problem mit varchar ist das Limit von x Bytes, was für xml nicht der Fall ist. – none

+2

Welche Version von SQL verwenden Sie? nvarchar (max) sollte Ihnen bis zu 2GB bieten. –

+0

Nach einer schnellen Suche gibt es einen Unterschied zwischen dem Angeben von varchar (5000) und varchar (max) – none

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

Dies ist, was ich normalerweise tun, es ist so sauber, leicht zu merken, schwer zu verderben :) – Squazz