-- Erstellen einer einfachen Beispiel-Tabelle
DECLARE @Table TABLE
(
ID int,
Nummer int,
EinName varchar(255)
)
-- Werte in die Beispiel-Tabelle eintragen
INSERT INTO @Table (ID, Nummer, EinName)
VALUES
(1, 123, 'Vanessa'),
(2, 456, 'Claudio'),
(3, 789, 'Olaf')
-- Zur Lösung müssen die Tabellenwerte zunächst in den binären Datentyp umgewandet werden
-- Lösung hier als Beispiel über eine Laufzeit-Zwischentabelle (CTE => common table expression)
;WITH cte_ErsteKonvertierung
AS
(
SELECT
ID,
Nummer,
EinName,
CONVERT(varbinary(max), CONVERT(varchar(25), ID)) as ID_bin,
CONVERT(varbinary(max), CONVERT(varchar(25), Nummer)) as Nummer_bin,
CONVERT(varbinary(max), EinName) as EinName_bin
FROM @Table
)
-- die binären Datentypen können dann mit den XML-Befehlen zu Base64-Strings konvertiert werden
SELECT
ID,
ID_bin,
CAST(N'' AS XML).value('xs:base64Binary(xs:hexBinary(sql:column("ID_bin")))', 'VARCHAR(MAX)') as ID_Base64Encoding,
Nummer,
Nummer_bin,
CAST(N'' AS XML).value('xs:base64Binary(xs:hexBinary(sql:column("Nummer_bin")))', 'VARCHAR(MAX)') as Nummer_Base64Encoding,
EinName,
EinName_bin,
CAST(N'' AS XML).value('xs:base64Binary(xs:hexBinary(sql:column("EinName_bin")))' , 'VARCHAR(MAX)') as EinName_Base64Encoding
FROM cte_ErsteKonvertierung