Wie konvertiere ich ein XML-Feld mit mehr als 8000 Zeichen in einem string?
Habe ich eine SQL Server-Spalte vom Typ XML
enthalten einige Datensätze mit mehr als 8000 Zeichen.
Ich würde gerne konvertieren Sie diese Spalte in eine varchar
.
Ich bin nicht besorgt über das abschneiden (die ersten 8000 Zeichen ist in Ordnung).
Jedoch, wenn ich versuche CONVERT(varchar(8000), Content)
bekomme ich eine Fehlermeldung:
Ziel-string Größe zu klein zur Darstellung der XML-Instanz
Wenn ich versuche CONVERT(varchar(MAX), Content)
bekomme ich eine Fehlermeldung:
Zeichenfolgen-oder Binärdaten würden abgeschnitten werden
Wenn ich versuche CONVERT(varchar(20000), Content)
bekomme ich eine Fehlermeldung:
Größe (20000) der Typ 'varchar' überschreitet die maximal zulässige für einen beliebigen Datentyp (8000)
Wenn ich versuche CONVERT(text, Content)
bekomme ich eine Fehlermeldung:
Explizite Konvertierung vom Datentyp xml in text ist nicht erlaubt
Gibt es eine Abhilfe?
varchar(max)
sollte gut funktionieren. Wie das genau bedeutet..Vielleicht ist es die Konfiguration dann.. ich sicherlich eine Fehlermeldung erhalten.
Post, der als Antwort und ich werde es akzeptieren. Ich habe eine dumme (der Kontext war ich mit umwandeln in verursacht ein Problem, sprudelte).
Getan, und ich habe versucht, zu erraten, Ihre "sprudelte Problem":).
InformationsquelleAutor Matt Mitchell | 2012-07-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Cast zu
varchar(max)
sollte gut funktionieren. Sie haben wahrscheinlich ein Problem an anderer Stelle. Sie würde bekommen, dass Fehler, wenn Sie versuchen, einfügen/aktualisieren einer Spalte mit Datentypvarchar(8000)
.hashbytes
Funktion, die hat einen 8000-limit max 🙂Schrieb die bestimmte use-case, hatte ich hier: mattmitchell.com.au/Entdeckung-Duplikat-xml-Daten in sql-server
InformationsquelleAutor Mikael Eriksson
Das Problem, dass Sie hat zu tun mit dem Versuch, konvertieren Sie die xml-Daten in varchar. Ich habe ein ähnliches Problem vor, wenn Sie versuchen zu konvertieren, eine XML-Zeichenfolge, die ist viel kleiner als deines, die in NVARCHAR. Der Wechsel von einer Umstellung auf eine BESETZUNG sollte Ihr problem lösen. So weit wie die Größe, die Sie sind besser dran, nur eine Einstellung von MAX.
InformationsquelleAutor Zane
Ich hatte nie diese Besondere Notwendigkeit, aber eine andere Möglichkeit, die ich versuchen würde, wäre
Leider nicht, es versucht zu werfen, bevor Sie eine chance haben, substring >
Target string size is too small to represent the XML instance
Ignoriert mein Kommentar, das würde wahrscheinlich funktionieren, obwohl der substring ist unnötig.
InformationsquelleAutor Alex