Me gustaría escribir una consulta T-SQL donde codifico una cadena como una cadena Base64. Sorprendentemente, no puedo encontrar ninguna función T-SQL nativa para hacer la codificación Base64. ¿Existe una función nativa? Si no, ¿cuál es la mejor manera de hacer la codificación Base64 en T-SQL?
sql-server-2005
tsql
encoding
base64
Jacob
fuente
fuente
Respuestas:
Sé que esto ya ha sido respondido, pero acabo de pasar más tiempo del que me gustaría admitir creando declaraciones SQL de una sola línea para lograr esto, así que las compartiré aquí en caso de que alguien más necesite hacer lo mismo:
Tuve que usar una tabla generada por subconsulta en la primera consulta (codificación) porque no pude encontrar ninguna forma de convertir el valor original ("TestData") a su representación de cadena hexadecimal ("5465737444617461") para incluir como argumento para xs: hexBinary () en la instrucción XQuery.
¡Espero que esto ayude a alguien!
fuente
xs:base64Binary(sql:column("bin"))
(sin laxs:hexBinary
llamada) también funciona. ¡Gran ayuda!SELECT CAST( CAST(N'' AS XML).value( 'xs:base64Binary("LgkoCU0JJAlNCTAJQAkyCUcJIAAJCTIJTQkfCU0JLwk+CQ8JIAA4CT4JJAkgABsJKAlNCWQJ")' , 'VARBINARY(MAX)' ) AS NVARCHAR(MAX) ) UnicodeEncoding ;
La forma más simple y corta que pude encontrar para SQL Server 2012 y superior es
BINARY BASE64
:Para Base64 en cadena
(o
nvarchar(max)
para cadenas Unicode)fuente
Aquí hay una modificación a la respuesta de mercurial que también usa la subconsulta en la decodificación, permitiendo el uso de variables en ambas instancias.
fuente
Aquí está el código para las funciones que harán el trabajo.
Ejemplo de uso:
fuente
Me encantó la respuesta de @ Slai. Solo tuve que hacer modificaciones muy pequeñas en las frases que buscaba. Pensé en compartir lo que terminé en caso de que ayude a alguien a tropezar con esta página como lo hice yo:
fuente
VARBINARY
aVARBINARY(56)
, y luego funcionó.No, no hay una función nativa, este método me ha funcionado en el pasado: http://www.motobit.com/help/scptutl/sa306.htm también
lo ha hecho este método:
http://www.vbforums.com/ showthread.php? t = 554886
fuente
Esto es útil para codificar y decodificar.
Por Bharat J
fuente
Hice un script para convertir un hash existente codificado en base64 a decimal, puede ser útil:
fuente
Puedes usar solo:
luego, después de la codificación, recibirá el texto 'MjE4Nqk5'
fuente