相当有趣的SQL函数

ZHOUGE 2010-09-08 03:38:51
public static string ConveToBsv(string xyCardnum)
{
string tempStr = Convert.ToString(Convert.ToInt32(xyCardnum), 2);
string str_xy = tempStr.Replace('0', 'k').Replace('1', '0').Replace('k', '1'); //按位取反 得到校园卫士二进制卡号取反的数值
return string.Format("{0:x}", Convert.ToInt32(str_xy, 2)).ToUpper();
}

上面是一个c#函数,实现的功能是将一个字符型数值先转成二进制,然后取反,最后返回一个十六进制的字符。

哪位帮忙写个SQL_SERVER自定义函数来实现这个功能? 不胜感激。
...全文
139 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZHOUGE 2010-09-10
  • 打赏
  • 举报
回复
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO



--数字转换成16进制
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
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

调用:
dbo.f_int2hex(16777215-c.card_id) 16777215=111111111111111111111111
claro 2010-09-09
  • 打赏
  • 举报
回复
贴个取巧的看看,学习学习。
ZHOUGE 2010-09-09
  • 打赏
  • 举报
回复
我已经解决了,不过是个取巧的方法,有更好的请贴出来,谢谢。 我的方法是写一个转十六进制的函数,参数为:整型数。用时参数取反,用1111111任意多个,根据实际情况定,换为十进制,减去该十进制树即可。
cjzm83 2010-09-08
  • 打赏
  • 举报
回复

select cast(~ 10 as varbinary)
「已注销」 2010-09-08
  • 打赏
  • 举报
回复

34,593

社区成员

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

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