Ich habe eine Textzeichenfolge, die als BLOB
-Datentyp in einer Datenbank gespeichert ist. Ich möchte es durch eine SQL-Auswahlabfrage extrahieren, habe jedoch Probleme beim Konvertieren/Casting von BLOB
in lesbare text
.
Ich habe es versucht z.
select convert(nvarchar(40),convert(varbinary(40),BLOBTextToExtract))
from [NavisionSQL$Customer]
Ich denke, ich brauche etwas Ähnliches, aber ich kann nicht genau herausfinden, was ich für die Konvertierung benötige. Kann mir jemand bitte eine Wegbeschreibung geben?
Grüße
Problem war anscheinend nicht der SQL-Server, sondern das NAV-System, das das Feld aktualisiert. Es gibt eine Komprimierungseigenschaft, die für BLOB-Felder in NAV verwendet werden kann, die nicht Teil von SQL Server sind. Die benutzerdefinierte Komprimierung machte die Daten jedoch unlesbar, obwohl die Konvertierung funktionierte.
Die Lösung bestand darin, die Komprimierung über den Objekt-Designer, den Tabellen-Designer, die Eigenschaften für das Feld zu deaktivieren (Umschalt + F4 in der Feldzeile).
Danach kann die Datenextraktion mit z. B. Select convert (varchar (max), cast (BLOBFIELD als binär)) Aus der Tabelle durchgeführt werden
Danke für alle Antworten, die in vielerlei Hinsicht richtig waren!
Es hängt davon ab, wie die Daten ursprünglich in die Spalte eingefügt wurden. Versuchen Sie eine der folgenden Möglichkeiten:
SELECT CONVERT(NVarChar(40), BLOBTextToExtract)
FROM [NavisionSQL$Customer];
Oder wenn es nur varchar
... war.
SELECT CONVERT(VarChar(40), BLOBTextToExtract)
FROM [NavisionSQL$Customer];
Ich habe dieses Skript verwendet, um SQL Server 2K8 R2 zu überprüfen und zu testen:
DECLARE @blob VarBinary(MAX) = CONVERT(VarBinary(MAX), 'test');
-- show the binary representation
SELECT @blob;
-- this doesn't work
SELECT CONVERT(NVarChar(100), @blob);
-- but this does
SELECT CONVERT(VarChar(100), @blob);
CREATE OR REPLACE FUNCTION HASTANE.getXXXXX(p_rowid in rowid) return VARCHAR2
as
l_data long;
begin
select XXXXXX into l_data from XXXXX where rowid = p_rowid;
return substr( l_data, 1, 4000);
end getlabrapor1;
Kannst du das versuchen:
select convert(nvarchar(max),convert(varbinary(max),blob_column)) from table_name
Ich habe es gefunden...
bcp "SELECT top 1 BlobText FROM TableName" Abfrage "C:\DesinationFolder\FileName.txt" -T -c '
Wenn Sie verschiedene Optionen für Bcp-Flags kennen müssen ...