SQL中十六进制转十进制语句

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL中十六进制转十进制语句相关的知识,希望对你有一定的参考价值。

参考技术A if exists(select * from sysobjects where name='p_zh' and type='p')
drop procedure p_zh

create procedure p_zh
@str varchar(10),--十六进制数
@ss int output--转换后的十进制数
as
begin
declare @len int --十六进制数的长度
declare @st char(1) --取十六进制字符串里的字符
declare @st1 int--将取出的十六进制字符串里的字符转换成十进制数
declare @le int --幂的值
set @ss=0
set @len=len(@str)
select @len
set @le=@len+1
while(@len>=1)
begin
set @st=substring(@str,@le-@len,1)
select @st

--判断是什么类的数,该怎么转换成十进制数
if(@st in('1','2','3','4','5','6','7','8','9','0')) set @st1=convert(int,@st)
if(@st in('A','a')) set @st1=10
if(@st in('B','b')) set @st1=11
if(@st in('C','c')) set @st1=12
if(@st in('D','d')) set @st1=13
if(@st in('E','e')) set @st1=14
if(@st in('F','f')) set @st1=15
set @len=@len-1
set @st1=@st1*power(16,@len)
set @ss=@ss+@st1
set @len=@len+1
set @len=@len-1
end
select @ss '十进制'
end

--例:
declare @sls varchar(10)
declare @ss int
set @sls='a5a8'
set @ss=0
execute p_zh @sls,@ss output
--可能有点烦,但我会的就是这个本回答被提问者采纳
参考技术B http://zhidao.baidu.com/question/132524301.html

看看这个

sql语句中怎么把字符串两位两位的反转

如下图片:我想把“16jz”这列数反转。也就是88CF55A0变成A055CF88 然后写到“16进制倒置”的列里,再把“16进制倒置”这列的数转成10进制写入“十进制里”列

update table

set 16进制倒置=right(16jz,2)+SUBSTRING(16jz,5,2)+SUBSTRING(16jz,3,2)+left(16jz,2);
第二个需求也类似这样操作,但需要写一个自定义函数,你百度一下吧,有这方面的函数,只是代码有点多,在这里就不贴上来了
参考技术A 我觉得你应该先把16进制转10进制,再用REVERSE函数反转10进制数,再把得到的这个10进制数转16进制,10进制转16进制可以用cast(10进制数as varbinary(255)) 参考技术B update 表 set 16进制倒置 = REVERSE(16jz), 十进制 = REVERSE(16进制数)
from 表

试试,倒置应该没问题。UPDATE那块我没试。

以上是关于SQL中十六进制转十进制语句的主要内容,如果未能解决你的问题,请参考以下文章

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

C# 把word转成2进制存储到SQL2000中的问题

sql Server如何编写函数实现把十进制数转换为二进制数?求大神相助!!

sql 读出来的16进制怎么转10进制 5407821BE976F357225A9E49C68D0291 和3C2FAA7F4C799C8C6CD8AD45E276EBCD

MySQL二进制日志功能介绍

BYTE数据怎么转化成二进制字符串