-- =============================================

-- 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位移运算函数的更多相关文章

  1. SQL Server 聚合函数算法优化技巧

    Sql server聚合函数在实际工作中应对各种需求使用的还是很广泛的,对于聚合函数的优化自然也就成为了一个重点,一个程序优化的好不好直接决定了这个程序的声明周期.Sql server聚合函数对一组值 ...

  2. SQL ServerOVER 子句,over开窗函数,SQL SERVER 开窗函数

    https://technet.microsoft.com/zh-cn/library/ms189461(v=sql.105).aspx http://www.cnblogs.com/85538649 ...

  3. [转载]SQL字符串处理函数大全

    [转载]http://www.cnblogs.com/andy2005/archive/2007/12/04/981864.html select语句中只能使用sql函数对字段进行操作(链接sql s ...

  4. SQL字符串处理函数大全

    select语句中只能使用sql函数对字段进行操作(链接sql server),select 字段1 from 表1 where 字段1.IndexOf("云")=1;这条语句不对 ...

  5. SQL 字符串处理函数大全

    select语句中只能使用sql函数对字段进行操作(链接sql server),select 字段1 from 表1 where 字段1.IndexOf("云")=1;这条语句不对 ...

  6. SQL基础随记1 SQL分类 常用函数 ALL ANY EXISTS IN 约束

    SQL基础随记1 SQL分类 常用函数 ALL ANY EXISTS IN 约束   其实这里知识不难,只是好久不接触突然被问的话有时还真的一时答不上,自己写一遍胜过盲扫.当然,也有些常读常新的地方会 ...

  7. SQL中随机数函数rand()简介

    转自:http://database.51cto.com/art/201009/224397.htm 下文将为您介绍SQL中的随机函数rand(),供您参考,如果您是才接触SQL Server的新手, ...

  8. SQL Server排序函数row_number和rank的区别

    SQL Server排序函数row_number和rank的区别 直接看测试结果 declare @table table(name varchar(100),amount int, memo var ...

  9. 转载 sql 存储过程与函数区别

    SQL Server用户自定义函数和存储过程有类似的功能,都可以创建捆绑SQL语句,存储在server中供以后使用.这样能够极大地提高工作效率,通过以下的各种做法可以减少编程所需的时间: 重复使用编程 ...

随机推荐

  1. Notepad++编写Markdown

    Markdown语法高亮 下载userDefineLang_markdown.xml 打开Notepad++的 Language 菜单,选中底部的 Define your language... 在 ...

  2. Java基础-一个java文件多个类的问题

    一个.java文件当然可以包括多个类.但这些类有一个特殊的类与其它的不同,,这个类是带public 属性的类.一个.java类文件中仅有一个public属性的类.而且这个类与文件名相同.

  3. Python的MySQLdb模块安装

    MySQL-python-1.2.1.tar.gz  下载地址:https://pan.baidu.com/s/1kVfH84v 然后解压,打开README(这个其实没有什么鸟用) 里面有安装过程: ...

  4. How to stop pycharm show files in project in red color?

    You can change the file color to whatever you want. File > Settings > Editor > Colors&F ...

  5. 将DataTable中的数据导出到Excel

    public static void Export(System.Data.DataTable dt,NPOI.HSSF.UserModel.HSSFWorkbook workbook,string ...

  6. Java学习笔记13---一个循环程序的设计范例

    package welcome; import java.util.Scanner; /* * 一个循环程序的设计范例 * 首先编写仅执行一次的程序(当无循环时) * 循环的设计步骤: * 1.确定程 ...

  7. [Unity] Shader(着色器)之纹理贴图

    在Shader中,我们除了可以设定各种光线处理外,还可以增加纹理贴图. 使用 settexture 命令可以为着色器指定纹理. 示例代码: Shader "Sbin/ff2" { ...

  8. [译]merge vs rebase

    git rebase和git merge设计的初衷是解决相同的一件事, 即把一个分支合并到另外一个分支--只是他们两个处理的方式非常不一样. 当你在一个特定的分支开发新功能, 团队的其它成员在mast ...

  9. java表格的使用 单元格绘制二

    JTable单元格是由单元格绘制器绘制出来的,这是一些执行TableCellRenderer接口的类.TableCellRenderer接口定义了唯一的getTableCellRendererComp ...

  10. PHP变量入门教程(1)基础

    基础 PHP 中一个美元符号后面跟上一个变量名称,即表示一个变量.变量的名称是对大小写敏感的. 变量名与 PHP 中其它的标签一样遵循相同的规则.一个有效的变量名由字母或者下划线开头,后面跟上任意数量 ...