sql >> データベース >  >> RDS >> Sqlserver

SQL Server 2005 T-SQL での Base64 エンコーディング

    これはすでに回答されていることは知っていますが、これを達成するために単一行の SQL ステートメントを考え出すのに、認めるよりも多くの時間を費やしたので、他の誰かが同じことをする必要がある場合に備えて、ここでそれらを共有します:

    -- Encode the string "TestData" in Base64 to get "VGVzdERhdGE="
    SELECT
        CAST(N'' AS XML).value(
              'xs:base64Binary(xs:hexBinary(sql:column("bin")))'
            , 'VARCHAR(MAX)'
        )   Base64Encoding
    FROM (
        SELECT CAST('TestData' AS VARBINARY(MAX)) AS bin
    ) AS bin_sql_server_temp;
    
    -- Decode the Base64-encoded string "VGVzdERhdGE=" to get back "TestData"
    SELECT 
        CAST(
            CAST(N'' AS XML).value(
                'xs:base64Binary("VGVzdERhdGE=")'
              , 'VARBINARY(MAX)'
            ) 
            AS VARCHAR(MAX)
        )   ASCIIEncoding
    ;
    

    元の値 ("TestData") を 16 進文字列表現 ("5465737444617461") に変換して引数として含める方法が見つからなかったため、最初の (エンコード) クエリでサブクエリによって生成されたテーブルを使用する必要がありました。 XQuery ステートメントの xs:hexBinary()。

    これが誰かの役に立てば幸いです!



    1. ANSI_NULLS は TSQL でどのように機能しますか?

    2. すでにデータが含まれているMySQLデータベースフィールドにデータを追加する

    3. トップ5PostgreSQLクエリ監視ツール

    4. GROUPBYステートメントの事前注文