Je voudrais écrire une requête T-SQL où j'encode une chaîne en tant que chaîne Base64. Étonnamment, je ne trouve aucune fonction T-SQL native pour l'encodage Base64. Existe-t-il une fonction native? Sinon, quelle est la meilleure façon de faire l'encodage Base64 dans T-SQL?
124
Réponses:
Je sais que cela a déjà été répondu, mais j'ai juste passé plus de temps que je ne veux l'admettre à proposer des instructions SQL sur une seule ligne pour accomplir cela, donc je les partagerai ici au cas où quelqu'un d'autre aurait besoin de faire de même:
J'ai dû utiliser une table générée par une sous-requête dans la première requête (codage) car je ne trouvais aucun moyen de convertir la valeur d'origine ("TestData") en sa représentation sous forme de chaîne hexadécimale ("5465737444617461") à inclure comme argument de xs: hexBinary () dans l'instruction XQuery.
J'espère que ça aidera quelqu'un!
la source
xs:base64Binary(sql:column("bin"))
(sans l'xs:hexBinary
appel) fonctionne également. Grande aide!SELECT CAST( CAST(N'' AS XML).value( 'xs:base64Binary("LgkoCU0JJAlNCTAJQAkyCUcJIAAJCTIJTQkfCU0JLwk+CQ8JIAA4CT4JJAkgABsJKAlNCWQJ")' , 'VARBINARY(MAX)' ) AS NVARCHAR(MAX) ) UnicodeEncoding ;
Le moyen le plus simple et le plus court que j'ai pu trouver pour SQL Server 2012 et supérieur est
BINARY BASE64
:Pour Base64 à la chaîne
(ou
nvarchar(max)
pour les chaînes Unicode)la source
Voici une modification de la réponse de mercurial qui utilise également la sous-requête sur le décodage, permettant l'utilisation de variables dans les deux instances.
la source
Voici le code des fonctions qui feront le travail
Exemple d'utilisation:
la source
J'ai adoré la réponse de @ Slai. Je n'ai eu qu'à apporter des modifications mineures aux monoplaces que je recherchais. J'ai pensé partager ce avec quoi je me suis retrouvé au cas où cela aiderait quelqu'un d'autre à tomber sur cette page comme je l'ai fait:
la source
VARBINARY
enVARBINARY(56)
, puis cela a fonctionné.Non, il n'y a pas de fonction native, cette méthode a fonctionné pour moi dans le passé: http://www.motobit.com/help/scptutl/sa306.htm a
donc cette méthode:
http://www.vbforums.com/ showthread.php? t = 554886
la source
Ceci est utile pour encoder et décoder.
Par Bharat J
la source
J'ai fait un script pour convertir un hachage existant encodé en base64 en décimal, cela peut être utile:
la source
Vous pouvez utiliser uniquement:
puis après l'encodage, vous recevrez le texte 'MjE4Nqk5'
la source