sqlserver 2000 中 按位与 的应用

本文介绍了如何在 SQL Server 2000 中利用按位与(&)运算符实现多条件判断。通过与预定义的二进制常数进行按位与操作,可以灵活控制流程,只需一个参数即可决定不同if块的执行。这种技术适用于那些二进制形式中左起第一位为1,其余位为0的整数常数。通过与这些常数进行按位与运算,可以实现特定条件的判断,从而在存储过程中实现复杂的逻辑控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近见到一个过程,使用 按位与(&) 实现多转向判断,就是这样的效果,只需一个参数,就可以控制执行 0 个、1个、多个 if 块中的语句。

 

这个应用利用 参数 和 预定义的常数 &,判断结果是否为 0 实现。

 

这样的常数只能是:1、2、4、8、16 ... ,这些常数的特点是,其二进制形式中左第一位是1,后面所有有效位都是 0,因此比这类数小 1 的数二进制所有有效位都是 1。

 

比如

1  二进制 1

2  二进制 10,    1  的二进制  1

4  二进制 1000,3  的二进制  11

等。

 

(这类数有个学名,我不记得了,不知道名字因此也找不到资料,后悔学生时代混过来。。暂时叫 C 型常数)

 

和这些数进行 & 运算的参数(A),在运算后有这样的规则:

 

1、A 的二进制全 1 ,则所有比 A 小的数 & 的结果都是原数,即 非 0。这类数是 3、7、15 等;

2、C 型只能把相同数 & 出 非0;

3、不是 1、2 的数,就是把 A 拆成小于 A 的 C 型数,这样的数 & 出非 0,其他的还是 0。

 

3 是猜的,不能验证。

比如:

A==1,A & 1 =1;

A==2,A & 2 =2, A & 1 =0;

A==3,A & 1 =1, A & 2 =2;

A==4,A & 1 =0, A & 2 =0, A & 4=4;

 

 

对应的存储过程中的应用示例:

declare @A int

 

if @A & 1 <>0

  语句...

 

if @A & 2 <>0

  语句...

 

if @A & 4 <>0

  语句...

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值