Eu gostaria de escrever uma consulta T-SQL em que codifico uma string como uma string Base64. Surpreendentemente, não consigo encontrar nenhuma função T-SQL nativa para codificação Base64. Existe uma função nativa? Caso contrário, qual é a melhor maneira de fazer a codificação Base64 no T-SQL?
sql-server-2005
tsql
encoding
base64
Jacob
fonte
fonte
Respostas:
Sei que isso já foi respondido, mas dediquei mais tempo do que gostaria de admitir a criar instruções SQL de linha única para fazer isso, então as compartilharei aqui caso outras pessoas precisem fazer o mesmo:
Eu tive que usar uma tabela gerada por subconsulta na primeira consulta (codificação) porque não consegui encontrar nenhuma maneira de converter o valor original ("TestData") em sua representação de cadeia hexadecimal ("5465737444617461") para incluir como argumento para xs: hexBinary () na instrução XQuery.
Espero que isso ajude alguém!
fonte
xs:base64Binary(sql:column("bin"))
(sem axs:hexBinary
chamada) também funciona. Ótima ajuda!SELECT CAST( CAST(N'' AS XML).value( 'xs:base64Binary("LgkoCU0JJAlNCTAJQAkyCUcJIAAJCTIJTQkfCU0JLwk+CQ8JIAA4CT4JJAkgABsJKAlNCWQJ")' , 'VARBINARY(MAX)' ) AS NVARCHAR(MAX) ) UnicodeEncoding ;
A maneira mais simples e curta que eu poderia encontrar para o SQL Server 2012 e acima é
BINARY BASE64
:Para Base64 para string
(ou
nvarchar(max)
para cadeias Unicode)fonte
Aqui está uma modificação na resposta do mercurial que também usa a subconsulta na decodificação, permitindo o uso de variáveis nos dois casos.
fonte
Aqui está o código para as funções que farão o trabalho
Exemplo de uso:
fonte
Adorei a resposta de @ Slai. Eu só tive que fazer modificações muito pequenas nas linhas que eu estava procurando. Pensei em compartilhar o que acabei, caso isso ajude mais alguém a tropeçar nessa página como eu fiz:
fonte
VARBINARY
paraVARBINARY(56)
e funcionou.Não, não há função nativa, esse método funcionou para mim no passado: http://www.motobit.com/help/scptutl/sa306.htm,
assim como este método:
http://www.vbforums.com/ showthread.php? t = 554886
fonte
Isso é útil para codificar e decodificar.
Por Bharat J
fonte
Eu fiz um script para converter um hash existente codificado em base64 em decimal, pode ser útil:
fonte
Você pode usar apenas:
depois da codificação, você receberá o texto 'MjE4Nqk5'
fonte