2016-05-23 13 views
1

Ich manipuliere einen großen Wert, der Zeilen- und Spaltenwerte enthält, die durch ASCII-Zeilen- und -Spaltentrennzeichen getrennt sind. Das Ergebnis sind Tabellendaten, die ich in die SQL-Tabelle einfüge.Übergeben von Spalte/Variable als Binärwert, um die Funktion zu konvertieren

Einfaches Beispiel die Idee zu bekommen:

George|20;Ivan|15;Peter|10; 

ist Transformation:

George 20 
Ivan 15 
Peter 10 

und in Users ([name], [age]) Tabelle eingefügt.

Vor dem Einfügen wird jeder Wert mithilfe der TRY_CONVERT-Funktion in seinen Spaltentyp konvertiert. Das Problem ist, dass dies nicht wie erwartet mit VARBINARY Daten funktioniert. Zum Beispiel (das zweite Ausgangssignal korrekt ist):

DECLARE @A NVARCHAR(1024) = '0xFE520676B1A1D93DABAB2319EEA03674F3632EAEEB163D1E88244F5EB1DE10EB'; 

SELECT TRY_CONVERT(VARBINARY(255), @A) 
-- 0x300078004600450035003200300036003700360042003100410031004400390033004400410042004100420032003300310039004500450041003000330036003700340046003300360033003200450041004500450042003100360033004400310045003800380032003400340046003500450042003100440045003100300045004200 

SELECT TRY_CONVERT(VARBINARY(255), 0xFE520676B1A1D93DABAB2319EEA03674F3632EAEEB163D1E88244F5EB1DE10EB) 
-- 0xFE520676B1A1D93DABAB2319EEA03674F3632EAEEB163D1E88244F5EB1DE10EB 

Wenn die VARBINARY Daten als Zeichenkette übergeben wird, wird die Zeichenfolge selbst VARBINARY umwandelt. Ich muss die Daten ohne Anführungszeichen übergeben, aber wie wird dies getan, wenn eine Spalte/Variable vom Typ String übergeben wird?

Antwort

1

Ich musste die style Option der TRY_CONVERT Funktion verwenden.

DECLARE @A NVARCHAR(1024) = '0xFE520676B1A1D93DABAB2319EEA03674F3632EAEEB163D1E88244F5EB1DE10EB'; 

-- using style option 1 
SELECT TRY_CONVERT(VARBINARY(255), @A, 1) 
SELECT TRY_CONVERT(VARBINARY(255), 0xFE520676B1A1D93DABAB2319EEA03674F3632EAEEB163D1E88244F5EB1DE10EB) 
+1

Sie gefunden und die Antwort einige Sekunden früher :) Ich werde meine Antwort löschen, nehmen Sie upvote! – gofr1