加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

在 SQL Server 中实现数据的二元化和文字型态的数据转换

发布时间:2023-07-22 15:10:23 所属栏目:MsSql教程 来源:
导读:在工控应用上,返回的数据经常会以二进制的形成存储,而这些二进制数据又是以每4个bit表示一个十六进制的数据内容。解析的时候,往往是一个字节(Byte)占用8个位(bit),高位4bit 表示一个十六进制数据,低位4bit
在工控应用上,返回的数据经常会以二进制的形成存储,而这些二进制数据又是以每4个bit表示一个十六进制的数据内容。解析的时候,往往是一个字节(Byte)占用8个位(bit),高位4bit 表示一个十六进制数据,低位4bit 表示一个十六进制数据。
 
问题描述:在sql Server 数据库中,如何实现二进制数据与字符串数据之间的直接转换?
 
一定会有人立马反问我:为什么不在程序中使用 C# 或者 JAVA 或者 C++ 来处理这个业务呢?我的回答是:这个我知道,也已经实现了。但在一些特殊的应用环境和业务需求面前(如:对数据的统计、对数据的分析),我必须这么做! sql Server 数据库中,实现 varbinary 类型转换成 varchar 类型
 
实现的思路是:
 
每次取得 varbinary 中一个字节的数据,然后除以16 获得高位的4bit数据,再模16获得低位的4bit数据;分别从固定字符串中以下标的形式匹配对应的字符,最后累加起来即可。
 
代码如下:
 
<div class="codetitle"><a style="CURSOR: pointer" data="49236" class="copybut" id="copybut49236" onclick="doCopy('code49236')"> 代码如下:
 
<div class="codebody" id="code49236">
 
--==============================================
 
-- FUNCTION varbin2hexstr
 
-- 将 varbinary 类型的数据转换为 varchar 类型
 
--==============================================
 
IF OBJECT_ID ('dbo.varbin2hexstr') IS NOT NULL
 
DROP FUNCTION dbo.varbin2hexstr
 
GO
 
CREATE function varbin2hexstr(
 
@bin varbinary(8000)
 
)returns varchar(8000)
 
as
 
begin
 
declare @re varchar(8000),@i int
 
select @re='',@i=datalength(@bin)
 
while @i>0
 
select @re=substring('0123456789ABCDEF',substring(@bin,@i,1)/16+1,1)
 
+substring('0123456789ABCDEF',1)%16+1,1)
 
+@re
 
,@i=@i-1
 
-- return('0x'+@re)
 
return @re
 
end
 
GO
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章