利用 XML 實現 BASE64 編碼和解碼

來源:互聯網
上載者:User

--=================================================
--
-- 巧用 XML 實現 BASE64 編碼和解碼
--
-- 原理: 利用 XML / BINARY BASE64 的儲存特性
--
-- 字元集: 本機字元集使用 varchar
-- UCS2:   使用 nvarchar
-- UTF-8:  自訂 UTF-8/UCS2 之間位元組流互轉的函數
--
-- SQLCenter
-- 2010-09-14
--
--=================================================

------------------- BASE64 編碼 -------------------

declare @str varchar(max), @x xml
set @str = '編碼-SQLCenter'

-- 1. FOR XML ROW
set @x = (select convert(varbinary(max), @str) as b for xml raw, BINARY BASE64) -- 這裡大寫醒目一點
select [str] = @str, [xml] = @x, encode = @x.value('(row/@b)[1]', 'varchar(max)')
/*
str             xml                               encode
--------------- --------------------------------- ---------------------
編碼-SQLCenter  <row b="seDC6y1TUUxDZW50ZXI=" />  seDC6y1TUUxDZW50ZXI=
*/

-- 2. FOR XML PATH
set @x = (select b from (select convert(varbinary(max), @str) as b) t for xml path(''))
select [str] = @str, [xml] = @x, encode = @x.value('(b)[1]', 'varchar(max)')
/*
str             xml                          encode
--------------- ---------------------------- ---------------------
編碼-SQLCenter  <b>seDC6y1TUUxDZW50ZXI=</b>  seDC6y1TUUxDZW50ZXI=
*/

go

------------------- BASE64 解碼 -------------------

declare @base64 varchar(max), @x xml
set @base64 = 'veLC6y1TUUxDZW50ZXI='
set @x = '<b>' + @base64 + '</b>'
select [base64] = @base64, [xml] = @x, decode = convert(varchar(max), @x.value('(b)[1]', 'varbinary(max)'))
/*
base64                xml                          decode
--------------------- ---------------------------- ---------------
veLC6y1TUUxDZW50ZXI=  <b>veLC6y1TUUxDZW50ZXI=</b>  解碼-SQLCenter
*/

go

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.