With a SQL query I’ve had to write, I’ve had to encode some text in Base64.
The following functions where extremely useful, this is based on this solution, but has been adapted to handle Unicode characters.
Convert to Base64
CREATE FUNCTION [dbo].[fn_str_TO_BASE64] ( @STRING NVARCHAR(MAX) ) RETURNS NVARCHAR(MAX) AS BEGIN RETURN ( SELECT CAST(N'' AS XML).value( 'xs:base64Binary(xs:hexBinary(sql:column("bin")))' , 'NVARCHAR(MAX)' ) Base64Encoding FROM ( SELECT CAST(@STRING AS VARBINARY(MAX)) AS bin ) AS bin_sql_server_temp ) END
Convert from Base64
CREATE FUNCTION [dbo].[fn_str_FROM_BASE64] ( @BASE64_STRING NVARCHAR(MAX) ) RETURNS NVARCHAR(MAX) AS BEGIN RETURN ( SELECT CAST( CAST(N'' AS XML).value('xs:base64Binary(sql:variable("@BASE64_STRING"))', 'VARBINARY(MAX)') AS NVARCHAR(MAX) ) UTF8Encoding ) END
Here’s how you run the SQL queries:
SELECT dbo.fn_str_TO_BASE64('Hello World') SELECT [dbo].[fn_str_from_base64](dbo.fn_str_TO_BASE64('Hello World'))