【叶子函数分享四十一】SQL位移运算函数
来源:互联网 发布:victorinox 香水 知乎 编辑:程序博客网 时间:2024/04/30 01:16
-- =============================================
-- Author: <maco_wang>
-- Create date: <2011-03-22>
-- Description: <SQL位移运算函数>
-- =============================================
go
--创建函数
create function displacement(@n as bigint,@m as varchar(3))
returns int
as
begin
declare @maco varchar(50);set @maco=''
declare @i int
declare @x int
declare @s int
while (@n<>0)
begin
set @maco=@maco+convert(char(1),@n%2)
set @n=@n/2
end
set @maco=reverse(@maco)
set @maco=RIGHT('0000'+@maco,4)
set @s=LEN(@maco)
set @i=convert(int,RIGHT(@m,1))
set @x=1
if LEFT(@m,2)='<<'
begin
while(@x<=@i)
begin
select @maco=@maco+'0'
select @x=@x+1
end
select @maco=RIGHT(@maco,@s)
end
if LEFT(@m,2)='>>'
begin
while(@x<=@i)
begin
select @maco='0'+@maco
select @x=@x+1
end
select @maco=LEFT(@maco,@s)
end
set @i=LEN(@maco)
set @s=0
while(@i>0)
begin
if SUBSTRING(@maco,LEN(@maco)-@i+1,1)='1'
begin
select @s=@s+POWER(2,convert(float,@i-1))
end
select @i=@i-1
end
return @s
end
--测试示例
select dbo.displacement(1,'<<3')
select dbo.displacement(8,'>>1')
select dbo.displacement(12,'>>3')
--运行结果
/*
8
4
1
*/
- 【叶子函数分享四十一】SQL位移运算函数
- 【叶子函数分享二十九】完善SQL农历转换函数
- 【叶子函数分享三十】SQL简繁转换函数
- 【叶子函数分享四十三】SQL数字转英文函数
- 【叶子函数分享四十三】SQL数字转英文函数
- 【叶子函数分享二十九】完善SQL农历转换函数
- 【叶子函数分享五十七】计算个人所得税函数
- 【叶子函数分享五十一】在SQL SERVER中实现RSA加解密函数(第一版)
- 【叶子函数分享五十二】在SQL SERVER中实现RSA加解密函数(第二版)
- 【叶子函数分享五十二】在SQL SERVER中实现RSA加解密函数(第二版)
- 【叶子函数分享五十一】在SQL SERVER中实现RSA加解密函数(第一版)
- 【叶子函数分享四】综合模糊查询
- 【叶子函数分享四】综合模糊查询
- 【叶子函数分享三十八】得到条形码的校验位函数
- 【叶子函数分享十一】取汉字首字母的两个函数
- 【叶子函数分享十二】根据身份证得到生日函数
- 【叶子函数分享十三】根据身份证计算性别函数
- 【叶子函数分享二十四】根据年月生成日历函数
- JS操作JSON总结
- 数据库连接查询 sqlserver 2000
- javaBean+servlet+jsp实现分页效果
- Debug Assertion Failed! File:afxwin1.inl Line:22
- 近期计划
- 【叶子函数分享四十一】SQL位移运算函数
- struts2中Convention中的basePackage与locators配置种种
- 【叶子函数分享四十二】得到汉字笔画函数
- STL hash_map使用
- ActionScript编译器
- 《COM技术内幕》图摘
- 从今天开始写博客了
- aswing组件知识点
- NetBeans 时事通讯(刊号 # 140 - Mar 22, 2011)