[MSSQL]将十进制转成十六进制

本文介绍了如何在SQL中创建两个函数,用于将十进制数转换为十六进制。提供了详细的函数定义及测试示例,展示了转换过程和结果。作者提供了联系方式以供交流。
--创建函数
create function [dbo].[hex](@cardno int )
returns varchar (100)
as 
begin
declare @temp_mod int 
declare @i int 
declare @result varchar(100)
declare @temp_x int
declare @result_values int
set @result=''
set @i=1
set @temp_x=0
while @cardno>0 
begin 
set @temp_mod=@cardno%16
set @cardno=@cardno/16
set @result=(case @temp_mod 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 ltrim(str(@temp_mod)) end )+@result
end
return @result
end
--测试示例
select [dbo].[hex](1808) as Hex
--运行结果
/*
Hex
----------
710
*/
--第二版
/**************************** 
整数转换成进制
作者:不得闲
QQ: 75492895
Email: 
select number16,substring(number16,1,1) a,substring(number16,2,1) b, substring(number16,3,1) c, substring(number16,4,1) d, substring(number16,5,1) e,substring(number16,6,1) f, substring(number16,7,1) g, substring(number16,8,1) h, convert(decimal(10,0),isnull(replace(replace(replace(replace(replace(replace(substring(number16,1,1),'A','10'),'B','11'),'C','12'),'D','13'),'E','14'),'F','15'),0)) * power(16,7) + convert(decimal(10,0),isnull(replace(replace(replace(replace(replace(replace(substring(number16,2,1),'A','10'),'B','11'),'C','12'),'D','13'),'E','14'),'F','15'),0)) * power(16,6) + convert(decimal(10,0),isnull(replace(replace(replace(replace(replace(replace(substring(number16,3,1),'A','10'),'B','11'),'C','12'),'D','13'),'E','14'),'F','15'),0)) * power(16,5) + convert(decimal(10,0),isnull(replace(replace(replace(replace(replace(replace(substring(number16,4,1),'A','10'),'B','11'),'C','12'),'D','13'),'E','14'),'F','15'),0)) * power(16,4) + convert(decimal(10,0),isnull(replace(replace(replace(replace(replace(replace(substring(number16,5,1),'A','10'),'B','11'),'C','12'),'D','13'),'E','14'),'F','15'),0)) * power(16,3) + convert(decimal(10,0),isnull(replace(replace(replace(replace(replace(replace(substring(number16,6,1),'A','10'),'B','11'),'C','12'),'D','13'),'E','14'),'F','15'),0)) * power(16,2) + convert(decimal(10,0),isnull(replace(replace(replace(replace(replace(replace(substring(number16,7,1),'A','10'),'B','11'),'C','12'),'D','13'),'E','14'),'F','15'),0)) * power(16,1) + convert(decimal(10,0),isnull(replace(replace(replace(replace(replace(replace(substring(number16,8,1),'A','10'),'B','11'),'C','12'),'D','13'),'E','14'),'F','15'),0)) * power(16,0) from test_16to10 where len(number16)>6 -- create table test_16to10(number16 varchar(10) not null); --ex: number16 value is:'D95B7D3C'
### 回答1: 在 Microsoft SQL Server 中,若想定位具体的二进制字段,可以借助 SUBSTRING 函数来完成文本截取。该函数可以从二进制数据中获取指定范围内的字节数组,并返回十六进制字符串或二进制数据。函数的语法如下: SUBSTRING ( expression , start , length ) expression:二进制数据类型的列或变量。 start:从该位置开始截取,从 1 开始计数。 length:截取的字节数。 例如,有一个名为 bin_data 的二进制列,想要获取其第 4 个字节和它后面的 7 个字节,则可以使用以下代码: SELECT SUBSTRING(bin_data, 4, 7) FROM table_name; 此时,将会返回一个包含指定字节的十六进制字符串。 如果需要返回二进制数据,可以在函数中使用 CAST 函数将结果转化为二进制数据类型。例如: SELECT CAST(SUBSTRING(bin_data, 4, 7) AS VARBINARY) FROM table_name; 通过以上方法,我们可以在 Microsoft SQL Server 中方便地截取二进制数据并定位特定的字段。 ### 回答2: 在MS SQL Server中,二进制数据类型是用于存储二进制数据的数据类型。当我们需要截断二进制数据并定位具体字段时,可以使用SUBSTRING和PATINDEX函数。 1. 使用SUBSTRING函数截断二进制数据 SUBSTRING函数用于返回一个字符串或二进制数据类型中的一部分。我们可以使用该函数来截取一个二进制字符串中的一部分。语法如下: ``` SUBSTRING ( expression ,start , length ) ``` 其中,expression是二进制字符串的名称或者字符串LITERAL;start是要截取的起始位置,length是要截取的长度。例如,如果需要截取名为bin_column的二进制字符串的前10个字符,可以使用以下代码: ``` SELECT SUBSTRING(bin_column,1,10) FROM table; ``` 2. 使用PATINDEX函数定位具体字段 PATINDEX函数用于在字符串中查找模式,并返回该模式的起始位置。我们可以使用该函数来查找一个二进制字符串中特定字段的位置。语法如下: ``` PATINDEX ( '%pattern%' , expression ) ``` 其中,pattern是要查找的模式,expression是二进制字符串的名称或者字符串LITERAL。例如,如果要查找名为bin_column的二进制字符串中“field1”的起始位置,可以使用以下代码: ``` SELECT PATINDEX('%field1%',bin_column) FROM table; ``` 以上方法可以帮助我们截断二进制数据并定位具体字段。但需要注意的是,截断操作可能会影响数据的完整性和准确性,所以在使用时应慎重考虑。 ### 回答3: 当我们在 MSSQL 数据库表中存储二进制数据时,在查询或更新数据时,我们可能需要截断二进制数据或者定位到具体的字段。 要截断二进制数据,我们可以使用 MSSQL 中的 SUBSTRING 函数。SUBSTRING 函数可返回一个字符串、二进制值或文本段的一部分,可以通过指定起始位置和长度来截取数据。 例如,如果我们有一个名为 "BinaryData" 的二进制列,需要截取从第 3 个字节开始的 5 个字节的数据,可以使用以下语句: SELECT SUBSTRING(BinaryData, 3, 5) FROM TableName; 如果需要定位到具体的字段,可以使用 SQL Server Management Studio 中的数据查看器。在打开数据查看器后,选择要查看的表,然后单击查看菜单,选择“与二进制数据相关的数据”,接着选择相应的字段,这样可以将二进制数据以十六进制格式显示出来。 如果需要在查询或更新数据时引用二进制字段,可以在查询或更新语句中使用 CONVERT 函数来将二进制数据转换为 ASCII 码或十六进制字符串。例如: SELECT CONVERT(VARCHAR(8000), BinaryData, 2) FROM TableName; 其中,“2” 参数表示将二进制数据转换为十六进制字符串。 总之,在处理 MSSQL 数据库表中的二进制数据时,我们可以使用 SUBSTRING 函数进行截取,使用 SQL Server Management Studio 中的数据查看器定位字段,并使用 CONVERT 函数将二进制数据转换为 ASCII 码或十六进制字符串,从而方便我们进行数据处理和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

厦门德仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值