zoukankan      html  css  js  c++  java
  • SQL位移运算函数

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

    -- 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

    */

  • 相关阅读:
    Axure学习二:基础教程
    Axure 学习一:基础知识详解参考文档
    iOS 加载动态库报错问题
    iOS 9 之 Spotlight框架
    iOS 之 新功能、扩展
    mysql慢查询
    php curl多线程抓取网页
    php读取qqwry.dat ip地址定位文件的类
    php比较加赋值语句
    yaf在windows7下32位的安装教程
  • 原文地址:https://www.cnblogs.com/accumulater/p/6244687.html
Copyright © 2011-2022 走看看