SQL中十六进制转十进制语句
发布网友
发布时间:2022-05-01 02:20
我来回答
共2个回答
热心网友
时间:2022-06-22 10:42
if exists(select * from sysobjects where name='p_zh' and type='p')
drop procere p_zh
create procere 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
--可能有点烦,但我会的就是这个
热心网友
时间:2022-06-22 10:43
http://zhidao.baidu.com/question/132524301.html
看看这个