Base64 encoding in SQL Server 2005 T-SQL

后端 未结 10 1107
傲寒
傲寒 2020-11-22 10:06

I\'d like to write a T-SQL query where I encode a string as a Base64 string. Surprisingly, I can\'t find any native T-SQL functions for doing Base64 encoding. Does a nativ

10条回答
  •  生来不讨喜
    2020-11-22 10:27

    Here is the code for the functions that will do the work

    -- To Base64 string
    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
    GO
    
    -- From Base64 string
    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
    

    Example of usage:

    DECLARE @CHAR NVARCHAR(256) = N'e.g., سلام جیران or В России'
    SELECT [dbo].[fn_str_FROM_BASE64]([dbo].[fn_str_TO_BASE64](@CHAR)) as converted
    

提交回复
热议问题