sql进制转换之实现十进制转为十六进制、十六进制转为十进制等的方法
2010-01-19 23:51
429 查看
本文收藏整理在SQL中使用sql实现进制转换,如:十进制转为十六进制、十六进制转为十进制、整数转换成二进制、数字转换成16进制的各种方法,一一介绍如下:
第一、十进制转为十六进制
DECLARE
@binary varbinary(255),
@str_return varchar(255)
SELECT
@binary = CONVERT(varbinary(255),29327795562177529)
EXEC master.dbo.xp_varbintohexstr @binary, @str_return OUTPUT
SELECT
结果 = reverse(@str_return)
/*
结果
__________________________
008613974878369F10000011x0
*/
第二、十六进制转为十进制
CREATE FUNCTION dbo.f_hex_dec(@s varchar(16))
RETURNS bigint
AS
BEGIN
--作者:pbsql
--参数不得含'0'~'9'、'a'~'f'、'A'~'F'之外的任意字符(首尾空格除外),否则返回0
DECLARE @i int,@result bigint
SELECT @i=0,@result=0,@s=RTRIM(LTRIM(UPPER(REVERSE(@s))))
WHILE @i<LEN(@s)
BEGIN
IF SUBSTRING(@s,@i 1,1) not between '0' and '9' and SUBSTRING(@s,@i 1,1) not between 'A' and 'F'
BEGIN
SELECT @result=0
break
END
SELECT @result=@result (CHARINDEX(SUBSTRING(@s,@i 1,1),'0123456789ABCDEF')-1)*POWER(16,@i),@i=@i 1
END
RETURN @result
END
GO
第三、整数转换成二进制的函数
create function f_int2bin(@i int)
returns varchar(1000)
as
begin
declare @s varchar(1000)
set @s=''
while @i>0
select @s=cast(@i%2 as varchar) @s
,@i=@i/2
return(@s)
end
go
--调用
select dbo.f_int2bin(200)
第四、数字转换成16进制
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_int2hex]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_int2hex]
GO
/*--数字转换成16进制
--邹建 2004.04(引用请保留此信息)--*/
/*--调用示例
--调用
select dbo.f_int2hex(123)
--*/
create function f_int2hex(@num int)
returns varchar(100)
as
begin
declare @re varchar(100)
set @re=''
while @num>0
select @re=substring('0123456789ABCDEF',@num%16 1,1) @re
,@num=@num/16
return(@re)
end
go
第一、十进制转为十六进制
DECLARE
@binary varbinary(255),
@str_return varchar(255)
SELECT
@binary = CONVERT(varbinary(255),29327795562177529)
EXEC master.dbo.xp_varbintohexstr @binary, @str_return OUTPUT
SELECT
结果 = reverse(@str_return)
/*
结果
__________________________
008613974878369F10000011x0
*/
第二、十六进制转为十进制
CREATE FUNCTION dbo.f_hex_dec(@s varchar(16))
RETURNS bigint
AS
BEGIN
--作者:pbsql
--参数不得含'0'~'9'、'a'~'f'、'A'~'F'之外的任意字符(首尾空格除外),否则返回0
DECLARE @i int,@result bigint
SELECT @i=0,@result=0,@s=RTRIM(LTRIM(UPPER(REVERSE(@s))))
WHILE @i<LEN(@s)
BEGIN
IF SUBSTRING(@s,@i 1,1) not between '0' and '9' and SUBSTRING(@s,@i 1,1) not between 'A' and 'F'
BEGIN
SELECT @result=0
break
END
SELECT @result=@result (CHARINDEX(SUBSTRING(@s,@i 1,1),'0123456789ABCDEF')-1)*POWER(16,@i),@i=@i 1
END
RETURN @result
END
GO
第三、整数转换成二进制的函数
create function f_int2bin(@i int)
returns varchar(1000)
as
begin
declare @s varchar(1000)
set @s=''
while @i>0
select @s=cast(@i%2 as varchar) @s
,@i=@i/2
return(@s)
end
go
--调用
select dbo.f_int2bin(200)
第四、数字转换成16进制
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_int2hex]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_int2hex]
GO
/*--数字转换成16进制
--邹建 2004.04(引用请保留此信息)--*/
/*--调用示例
--调用
select dbo.f_int2hex(123)
--*/
create function f_int2hex(@num int)
returns varchar(100)
as
begin
declare @re varchar(100)
set @re=''
while @num>0
select @re=substring('0123456789ABCDEF',@num%16 1,1) @re
,@num=@num/16
return(@re)
end
go
相关文章推荐
- 用C++实现十进制到十六进制的两种转换方法
- 利用数据结构中的桟 实现十进制 转为 二 到 十六 之间任何进制 的方法
- 十进制的正整数,负数, 小数转为二进制.八进制.十六进制的方法 包括原码,反码,补码的介绍
- C++实现十六进制字符串转换为十进制整数的方法
- java中 二进制 八进制 十六进制 十进制 相互转换 最简方法
- C#十六进制字符串转十进制int的方法
- 用栈方式实现十进制转十六进制
- C# 二进制、十进制、十六进制互转方法
- new 接口{内部实现方法} 转为 匿名内部类
- c语言编程实现十进制到十六进制的转换
- 二进制、八进制、十六进制 转为 十进制
- Python简单实现TCP包发送十六进制数据的方法
- php实现将上传word文件转为html的方法
- python实现csv格式文件转为asc格式文件的方法
- 利用sprintf和sscanf实现十六进制和十进制之间的相互转换
- 80x86汇编编程:实现十进制或十六进制向二进制的转换
- C#: 中文和UNICODE字符转换方法 及仿安居客地图实现。。。错误 GMap2未定义 解决办法 -VB 中文转为UNICODE字符
- java实现汉字、字符转为十六进制
- php实现将上传word文件转为html的方法
- [置顶] 栈应用:实现二进制转八进制、十进制、十六进制