亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

SQL Server中實現二進制與字符類型之間的數據轉換

2024-08-31 00:57:02
字體:
來源:轉載
供稿:網友
在工控應用上,返回的數據經常會以二進制的形成存儲,而這些二進制數據又是以每4個bit表示一個十六進制的數據內容。解析的時候,往往是一個字節(Byte)占用8個位(bit),高位4bit 表示一個十六進制數據,低位4bit 表示一個十六進制數據。

問題描述:在SQL Server 數據庫中,如何實現二進制數據與字符串數據之間的直接轉換?

一定會有人立馬反問我:為什么不在程序中使用 C# 或者 JAVA 或者 C++ 來處理這個業務呢?我的回答是:這個我知道,也已經實現了。但在一些特殊的應用環境和業務需求面前(如:對數據的統計、對數據的分析),我必須這么做!

SQL Server 數據庫中,實現 varbinary 類型轉換成 varchar 類型

實現的思路是:

每次取得 varbinary 中一個字節的數據,然后除以16 獲得高位的4bit數據,再模16獲得低位的4bit數據;分別從固定字符串中以下標的形式匹配對應的字符,最后累加起來即可。
代碼如下:

復制代碼 代碼如下:


--==============================================
-- 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',substring(@bin,@i,1)%16+1,1)
+@re
,@i=@i-1
-- return('0x'+@re)
return @re
end
GO


測試示例:

select dbo.varbin2hexstr(0x1432fabcdef1234567890)

SQL Server 數據庫中,實現 varchar 類型轉換成 varbinary 類型
一定會有人立馬想到:既然已經實現了varbinary 類型轉換成 varchar 類型,接下來需要做的,只是將函數逆向反轉實現便可。但實現也并非如此!實現的思路是:
先將整個字符串按照每兩位分組;
為什么不按照每8位或每4位進行分組?是為了考慮到函數的通用性。
如果按照每 8位 或者 每4位 分組,則整個字符串必須是8或者4的倍數,否則將出現字符不足,前面補 0的情況。
然后對每個字符進行處理,如:字符“A B C D E F” 對應轉換為“10 11 12 13 14 15”;
接著對每2個字符進行 16 的冪運算,并求和。如: AB = 10 * 16的一次方 + 11 * 16的零次方;
再將這個2個字符的整數和,轉換為一個字節(Byte)長度的 varbinary 數據;
最后將所有的 varbinary 數據直接相加即可。

代碼如下:

復制代碼 代碼如下:


--==============================================
-- FUNCTION hexstr2varbin
-- 將 varchar 類型的數據轉換為 varbinary 類型
--==============================================
IF OBJECT_ID ('dbo.hexstr2varbin') IS NOT NULL
DROP FUNCTION dbo.hexstr2varbin
GO
CREATE function [dbo].[hexstr2varbin](
@char varchar(8000)
)returns varbinary(8000)
as
begin
declare @re varbinary(8000), @tempchar varchar(2),
@getchar varchar(1), @getint int, @n int, @totalint int,
@i int, @tempint int, @runNum int -- 字符串截取段數
select @tempchar='',@i=datalength(@char), @re=0x;
if( @i>0)
begin
if ( @i%2 = 0) set @runNum= @i/2
else set @runNum= @i/2 + 1
while (@runNum > 0)
begin
if(@runNum = 1) set @tempchar = @char
else set @tempchar = substring(@char, (@runNum-1)*2,2)
select @n=1,@totalint=0;
-- 循環處理截取的每個字符串 (這里的字符串長度為2)
while @n < ( datalength(@tempchar) + 1 )
begin
set @getchar=substring(@tempchar,@n,1);
-- 將字符轉換為十六進制對應的數字
select @getint=case
when @getchar='a' then 10
when @getchar='b' then 11
when @getchar='c' then 12
when @getchar='d' then 13
when @getchar='e' then 14
when @getchar='f' then 15
else convert(int,@getchar) end;
set @tempint=@getint*power(16,datalength(@tempchar)-@n)
set @totalint = @totalint + @tempint
set @n=@n+1
end
set @re=convert(varbinary(1),@totalint) + @re;
set @runNum=@runNum-1;
end
end
return @re
end
GO


測試示例:

復制代碼 代碼如下:


select dbo.hexstr2varbin('ffffff2353f5feefaffae1fff1ffbaf1faffa33333333ff3aaafffffffaaff')


(完)

本文出自 “xugang” 博客,請務必保留此出處
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕在线成人| 日韩av在线资源| 国产免费一区二区三区在线能观看| 欧美精品免费在线观看| 成人精品一区二区三区电影黑人| 欧美日本黄视频| 久久精品国产69国产精品亚洲| 国产精品成人av在线| 久久人人爽人人爽爽久久| 91国内精品久久| 欧美美女操人视频| 欧美日韩国产中字| 亚洲第五色综合网| 欧美激情一级二级| 欧美午夜精品久久久久久人妖| 久久综合国产精品台湾中文娱乐网| 亚洲久久久久久久久久久| www.国产一区| 欧美另类暴力丝袜| 精品国内亚洲在观看18黄| 亚洲欧美精品一区二区| 91精品久久久久久久| 国产日韩欧美在线| 97精品一区二区三区| xvideos成人免费中文版| 91产国在线观看动作片喷水| 亚洲久久久久久久久久久| 3344国产精品免费看| 亚洲乱码av中文一区二区| 日本一区二区三区在线播放| 日韩在线免费高清视频| 亚洲精品久久久久| 97久久精品人人澡人人爽缅北| 欧美诱惑福利视频| 少妇久久久久久| 日本老师69xxx| 亚洲网站在线播放| 亚洲乱码国产乱码精品精| 国产精品av在线| 色噜噜亚洲精品中文字幕| 亚洲国产成人精品电影| 国内精品一区二区三区四区| 日韩在线免费视频观看| 欧美一级黄色网| 成人国产精品色哟哟| 亚洲男人的天堂网站| 精品自拍视频在线观看| 欧美精品中文字幕一区| 久热在线中文字幕色999舞| 欧美激情2020午夜免费观看| 91嫩草在线视频| 国产精品免费一区二区三区都可以| 国产精品扒开腿做爽爽爽男男| 在线观看久久久久久| 亚洲天堂一区二区三区| 97精品国产97久久久久久春色| 中文字幕欧美在线| 久久久视频精品| 中文字幕亚洲欧美日韩高清| 亚洲第一在线视频| 亚洲精品在线不卡| 韩国视频理论视频久久| 国产不卡一区二区在线播放| 国产欧美精品久久久| 国产精品香蕉在线观看| 日韩hd视频在线观看| 国内外成人免费激情在线视频| 国产精品视频xxxx| 色哟哟网站入口亚洲精品| 日韩激情av在线播放| 欧美人与物videos| 亚洲成av人影院在线观看| 久久国产精品99国产精| 国产视频亚洲视频| 日韩在线中文字| 性欧美xxxx视频在线观看| 欧美噜噜久久久xxx| 国产精品69精品一区二区三区| 亚洲高清色综合| 成人妇女淫片aaaa视频| 国产精品丝袜一区二区三区| 日韩av最新在线| 精品国产乱码久久久久久虫虫漫画| 都市激情亚洲色图| 日本一欧美一欧美一亚洲视频| 久久精品国产免费观看| 97人人模人人爽人人喊中文字| 久久这里有精品视频| 国产主播精品在线| 国产欧亚日韩视频| 色综合影院在线| 成人性生交大片免费观看嘿嘿视频| 久久深夜福利免费观看| 成人黄色网免费| 国产丝袜一区二区三区免费视频| 欧美日韩综合视频网址| 成人性生交大片免费看视频直播| 亚洲国产日韩欧美在线动漫| 日韩在线观看免费全| 欧美日韩成人网| 欧美中文字幕在线播放| 亚洲国产婷婷香蕉久久久久久| 欧美与黑人午夜性猛交久久久| 欧美性在线观看| 日韩精品视频在线免费观看| 欧美性猛交xxxx富婆弯腰| 国产情人节一区| 欧美成人精品在线视频| 亚洲黄页视频免费观看| 亚洲性日韩精品一区二区| 亚洲欧美综合区自拍另类| 人人澡人人澡人人看欧美| 欧美精品福利在线| 欧美性生交xxxxx久久久| 欧美激情一区二区三区久久久| 午夜精品久久久久久久男人的天堂| 日韩精品在线视频观看| 懂色av一区二区三区| 欧美激情性做爰免费视频| 3344国产精品免费看| 日韩精品免费在线观看| 日韩精品在线免费| 欧美xxxwww| 色99之美女主播在线视频| 久久777国产线看观看精品| 国产啪精品视频| 在线电影av不卡网址| 日韩免费高清在线观看| 色综合老司机第九色激情| 国产精品美女www| 亚洲老司机av| 国产精品日日摸夜夜添夜夜av| www.午夜精品| 国产一区二区丝袜| 亚洲va国产va天堂va久久| 国产ts人妖一区二区三区| 欧美日韩综合视频网址| 欧美疯狂性受xxxxx另类| 日韩精品视频免费专区在线播放| 精品免费在线视频| 亚洲激情小视频| 亚洲精品一区二区三区不| 亚洲视频精品在线| 97国产精品视频人人做人人爱| 欧美中文字幕在线视频| 欧美亚洲国产视频| 国产91在线视频| 精品久久久久久久久久久久| 亚洲免费中文字幕| 亚洲高清免费观看高清完整版| 国产精品一区二区三区久久久| 国产精品久久久久秋霞鲁丝| 狠狠躁夜夜躁人人爽天天天天97| 人妖精品videosex性欧美| 亚洲免费视频网站| 在线免费观看羞羞视频一区二区| 91国产精品视频在线| 日韩欧美综合在线视频| 亚洲一区二区三区久久| 97在线视频国产| 亚洲色图综合网| 91高清视频在线免费观看| 欧美日本在线视频中文字字幕| 日本韩国欧美精品大片卡二|