利用 XML 实现 BASE64 编码和解码

SQLCenter 2010-09-14 12:35:38
加精
--=================================================
--
-- 巧用 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
...全文
3355 117 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
117 条回复
切换为时间正序
请发表友善的回复…
发表回复
axman 2010-10-05
  • 打赏
  • 举报
回复
[Quote=引用 115 楼 g75510118 的回复:]
SQL 和 XML? 有什么关系 ? 菜鸟不太懂
[/Quote]

这么复杂的问题难怪你看不懂,那我说个故事你就懂了:

有一个部落的族长非常聪明,就象楼主这类人.部落里无论有大小事都来问他,他都能找出解决办法,所以引得一般跟帖的族人的无限崇拜.

有一天,一个族人家的牛头套进坛子里出不来了,于是族人来找族长.
族长说把牛按住,把坛子取下来不就行了.
族人说按不住,牛劲很大.
族长说找几个勇士来把牛射死,然后叫人按住,去取坛子.
族人照着做了还是没有取下坛子.
族长说再把牛头砍下来,从坛子里取出来.
族人照着做了,还是取不出来.
族长想了想,说再把坛子打碎了不就取出来了嘛.
族人照着做了,真的把牛头弄出来了.

结果全族的人一起称赞,我们的族长真聪明.真呀真聪明.............
一个字符编码的方法,又不是什么高深的算法,编码规则已经告诉你如何实现,却要通过XML+SQL来完成
这样一个功能,开着飞机去打酱油.这样的东西也叫"实现",竟然有人敢拿来出现世,竟然还有这么多人顶.

真正的程序员看了都哭了,因为这里没有一个真正的程序员.

zhuiqiu111 2010-09-26
  • 打赏
  • 举报
回复
看看 学习了
g75510118 2010-09-25
  • 打赏
  • 举报
回复
SQL 和 XML? 有什么关系 ? 菜鸟不太懂
munchie 2010-09-24
  • 打赏
  • 举报
回复
不得不回不得不回,好东西
blood_akm 2010-09-24
  • 打赏
  • 举报
回复
2010年09月24日
学一点 2010-09-23
  • 打赏
  • 举报
回复
值得学习
江南_CAO 2010-09-23
  • 打赏
  • 举报
回复
不错,顶了
liansini4323 2010-09-21
  • 打赏
  • 举报
回复
学习学习。。
kick5578 2010-09-21
  • 打赏
  • 举报
回复
正好要用到这个东西 谢了
Milk- 2010-09-20
  • 打赏
  • 举报
回复
比较强
friedDuck 2010-09-20
  • 打赏
  • 举报
回复
有看没有懂呀。
aimyray 2010-09-20
  • 打赏
  • 举报
回复
牛人!!!!!
jiuxiaxia 2010-09-20
  • 打赏
  • 举报
回复
学习学习了
huang01224 2010-09-19
  • 打赏
  • 举报
回复
好东西
xlg3030 2010-09-19
  • 打赏
  • 举报
回复
不错,学习下
marxzane 2010-09-19
  • 打赏
  • 举报
回复
看不太懂。。。
wsdlam123 2010-09-19
  • 打赏
  • 举报
回复
学习学习
zh0229 2010-09-19
  • 打赏
  • 举报
回复
来学习的
daishaoqiang 2010-09-19
  • 打赏
  • 举报
回复
学习来的
bldzhenghao 2010-09-19
  • 打赏
  • 举报
回复
学习一下
加载更多回复(82)

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧