求助一条SQL语句?再线等待

kzlong 2003-11-21 02:14:14
将一个字段(float)的数值替换成去掉高字节的数据
原2931159074(AEB5FO22)----之后的11923490(B5F022)?
...全文
41 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Benimarunikado 2003-11-21
  • 打赏
  • 举报
回复
强!!!
zjcxc 元老 2003-11-21
  • 打赏
  • 举报
回复
结果
-----------------------------------------------------
11923490.0

(所影响的行数为 1 行)

zjcxc 元老 2003-11-21
  • 打赏
  • 举报
回复
--改成存储过程就是:
create proc p_test
@a float, --要处理的数据
@len int, --要去掉的字节数
@re float out --返回的值
as
declare @str varchar(30),@b varbinary(30),@sql nvarchar(500)
select @b=cast(cast(@a as bigint) as varbinary(30))
exec master..xp_varbintohexstr @b, @str out
select @str=substring(@str,3,30)
,@str=substring(@str,patindex('%[^0]%',@str)+@len,30)

set @sql='set @a=cast(0x'+@str+' as bigint)'
exec sp_executesql @sql,N'@a float out',@re out
go

--调用示例
declare @a float
exec p_test 2931159074,2,@a out
select 结果=@a

--删除存储过程
drop proc p_test
zjcxc 元老 2003-11-21
  • 打赏
  • 举报
回复
declare @a float
set @a=2931159074

--处理
declare @str varchar(30),@b varbinary(30),@sql nvarchar(500)
select @b=cast(cast(@a as bigint) as varbinary(30))
exec master..xp_varbintohexstr @b, @str out
select @str=substring(@str,3,30)
,@str=substring(@str,patindex('%[^0]%',@str)+2,30)

set @sql='set @a=cast(0x'+@str+' as bigint)'
exec sp_executesql @sql,N'@a float out',@a out
select @a

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧