问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何将sql 中十六进制转换十进制

发布网友 发布时间:2022-05-01 02:20

我来回答

2个回答

热心网友 时间:2022-04-14 23:26

select Convert(int,0xF)                             --15
select Convert(numeric(18,2),0x030100017D000000)    --12.50

--10进制转换为2,8,16进制
Create Function DecTox(@A int,@Type Varchar(3))
Returns Varchar(100)
As
Begin
   --从右到左,每一位乘上基数的i-1次方的和
   Declare @Rst varchar(100)=''   --保存结果
   Declare @JS int             --转换基数
   Declare @YS int             --余数
        
   Set @JS=Case @Type 
           When 'Bin' Then 2   
           When 'Ocx' Then 8
           When 'Hex' Then 16
           Else Null End
 
   While @A>0
   Begin
      Set @YS=@A%@JS
      Set @Rst=Case @YS
        When 10 Then 'A'
        When 11 Then 'B'      
        When 12 Then 'C'
        When 13 Then 'D'
         When 14 Then 'E'
        When 15 Then 'F'
        Else Convert(Varchar(2),@YS)
        End+@Rst
      Set @A=Convert(int,@A/@JS)  
   End     
   return @Rst   
End

--2,8,16进制转换为10进制
Create Function fn_xToDec1(@A Varchar(50),@Type Varchar(3))
Returns int
As
Begin
   --从右到左,每一位乘上基数的i-1次方的和
   Declare @Rst int=0          --保存结果
   Declare @JS int             --转换基数
   Declare @I int              --字符串位置
   Declare @J int              
   Set @JS=Case @Type 
           When 'Bin' Then 2   
           When 'Ocx' Then 8
           When 'Hex' Then 16
           Else Null End
   Set @I=Len(@A)              --从最后一个开始向前截取
   Set @J=0
        
   While @I>0
   Begin
      Set @Rst=@Rst+Case substring(@A,@I,1) 
        When 'A' Then 10
        When 'B' Then 11
        When 'C' Then 12
        When 'D' Then 13
        When 'E' Then 14
        When 'F' Then 15 
        Else substring(@A,@I,1) 
        End*power(@JS,@J)
      Set @J=@J+1
      Set @I=@I-1 
   End     
   return @Rst   
End

热心网友 时间:2022-04-15 00:44

利用SQLSERVER中的varbinary来间接实现。
16进制字符串转10进制bigint(0-FFFFFFFFFFFFFFFF):
由于二进制比较容易转换为bigint 所以先将字符串转为二进制varbinary,再转换为10进制

1
2
3
4
5
6
7
8

CREATE function [dbo].[hextoint](@s varchar(16))
returns bigint
begin
declare @result bigint
set @result=CONVERT(bigint, CONVERT(varbinary, CAST(N'0x' + @s AS char), 1))--最简单有效的方法
return @result
END
GO

10进制转16进制字符串(bigint正负数都可以):相同的思路目前可以将二进制varbinary转换为字符串比较容易,那么先将10进制转二进制再进行16进制字符串输出

1
2
3
4
5
6
7
8
9

CREATE function [dbo].[inttohex](@num bigint)
returns varchar(16)
begin
declare @num2 varbinary(8),@r varchar(50)
set @num2=convert(varbinary(8),@num)--直接转换为二进制
set @r= dbo.varbin2hexstr(@num2)--二进制转16进制字符串
return @r
end
GO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

CREATE function [dbo].[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

以上代码测试环境WIN2003+SQLSERVER2008
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
vivox9和x9i有什么区别 ...设置原则跟构造要求。构造柱的设置原则跟构造要求是什么_百度... ...的U型钢筋锚环要几道?在哪里可以找到依据啊 ...月末不含税库存金额1065000元,请计算门店库存天数 公蟹吃什么 公蟹吃什么东西 爬行健身操功能和原理 锻炼爬行的好处有哪些呢 爬行健身法有什么优缺点 檀木如何粘合 成田剑先生还为哪些日本动漫配音,有名一点滴。谢谢了,大神帮忙啊 陈姓小女孩取名 怎样更新驱动程序 硅胶手机壳为什么老是一个角先变黄 表面浇上滴胶的透明手机壳还会变黄嘛? 在电脑上如何更新所有驱动?? 想在手机壳上做图案,手机壳已经打磨过,但需要什么性质的颜料耐磨? 学会计要注意什么啊??? 给手机上色用丙烯颜料行不行? 我想开始学会计 需要注意什么 需要做哪方面的准备会计要注意哪一些方面 会计培训需要注意什么? 自学初级会计需要注意哪些问题? 本科学会计,应该要注意些什么 求教MySQL大数据量查询问题 小米手机提示系统cache分区空间不足无法更新怎么解决? 小儿推拿可用艾草精油吗 男生发null给女生怎么回复 在爱情中男生发null是什么意思 null到底是什么意思?什么梗? 女孩给你发null是什么意思 谈恋爱中女孩对男孩说nuLL是怎么意思 sql中十六进制字符串如何转换为长整型 SQL中十六进制转十进制语句 SQL数据库中密码16进制怎么转换为字符串 桥式整流器sql 16-10是什么意思 sql 数据库中 长度为16的TEXT类型数据可保存多少字符 sql中字段id为number(16)由于数字过长,导致数据成为 《龙姬》txt全集下载 SQL查询一个字段中第二位和第三位为16的语句 有没有什么动漫男主眼睛不一样 sql查询年龄段16-64 有哪些动漫人物是异瞳。 SQL错误 消息 7302,级别 16,状态 1 有多少动漫角色长着波斯猫眼 SQL服务端是18年,其他是16年会有问题吗? 如何修改mssql索引最大限制为 16 重装战姬副本是什么 个人副本有哪些 SQL 第16届亚运会在广州召开,请结合赛程表 的数据设计数据库,并填充部分数据,完成赛事管理. 必须完成的 找一个百合综漫文 sql server有没有16进制双位取反的函数或者命令。例如45F0EA31 双位取反后: 31EAF045 求SQL数据库不能输入中文的解决方法?我用的是目前最新版SQL5.7.16,从官网下载的压缩连