Decode BASE64 encoded string SQL query syntax

-- declare vars. DECLARE @data VARCHAR(MAX), @XmlData XML -- set the base64 encoded varchar. SET @data = 'SGVsbG8gV29ybGQgIQ==' -- construct an xml var. SET @XmlData = CAST('<data>' + @data + '</data>' AS XML) -- base64 decode the @data. SELECT   CONVERT(VARCHAR(MAX),        @XmlData.VALUE('(data)[1]', 'varbinary(max)'))

Tags: ,

4 Responses to “SQL 2005 BASE64 Decode Query Syntax”

  1. What if input is in nvarchar?

  2. nvarchar is fine.
    DECLARE @data nvarchar(max)

  3. Unfortunatelly not.
    This code:
    DECLARE @data nvarchar(max), @XmlData xml

    SET @data = N’Добро’

    SET @XmlData = CAST(” + @data + ” as xml)

    SELECT CONVERT(nvarchar(max), @XmlData.value(’(data)[1]‘, ‘varbinary(max)’))

    returns NULL.
    If i encode this with http://makcoder.sourceforge.net/demo/base64.php
    then text is: JiMxMDQ0OyYjMTA4NjsmIzEwNzM7JiMxMDg4OyYjMTA4Njs=

  4. Hi muti2,
    The @data should be set as encoded, in which case, it is

    JiMxMDQ0OyYjMTA4NjsmIzEwNzM7JiMxMDg4OyYjMTA4Njs

    The result I got is

    &#_1044; &#_1086;&#_1073; &#_1088;&#_1086;

    (replace “_” with “”) which is as same as ’Добро’

    Try this,

    DECLARE @data NVARCHAR(MAX), @XmlData XML SET @data = N'JiMxMDQ0OyYjMTA4NjsmIzEwNzM7JiMxMDg4OyYjMTA4Njs=' SET @XmlData = CAST('<data>' + @data + '</data>' AS XML) SELECT CONVERT(VARCHAR(MAX), @XmlData.VALUE('(data)[1]', 'varbinary(max)'))

Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>