sql位运算
‘壹’ sql运算符解释
&是按位与运算符,如:A&B
只有当A,B同时为真时,结果才为真,其他情况都为假。
|
是
按位或
运算符,如:A|B
只有当A,B同时为假的时候结果才为假,其他情况为真。
^是按位
异或
运算符,如:A^B
只有当A,B同时为真时候为真,其他情况都为假。
‘贰’ 通过SQL Server的位运算功能巧妙解决多选查询方法
无论使用int还是varchar,对于Status的多选查询都是不易应对的。举例,常规思维下对CustomerStatus的Enum设置如下:
复制代码
代码如下:
[Serializable]
public
enum
CustomerStatus
{
New
=
0,
Active
=
1,
Overe
=
2,
Suspended
=
3,
Closing
=
4,
Closed
=
5
}
在数据库中以int形式存储了Status值。
如果我在页面中想一次搜索状态为Active,Overe和Suspended状态的Customer,该怎么办?程序是不是得把这三个状态值
拼成字符串传递给SQL去处理?虽然能实现,但是相当低效。
现在给出一个标准解决方案:
(1).
所有可能被用作搜索条件的枚举都应按如下位运算方式定义。
复制代码
代码如下:
public
enum
CustomerStatus
{
New
=
1,
Active
=
1<<1,
Overe
=
1<<2,
Suspended
=
1<<3,
Closing
=
1<<4,
Closed
=
1<<5
}
(2).
在数据库设计时,Status的字段必须为int型。
这样当我们做多选查询时@Status的Value=
CustomerStatus.Active
|
CustomerStatus.
Overe|
CustomerStatus.
Suspended
(3).
查询语句如下:
复制代码
代码如下:
Select
*
From
Customer
Where
[Status]
&
@Status
=
[Status]
如果@Status可为null时,
复制代码
代码如下:
Select
*
From
Customer
Where
(
@Status
is
null
Or
[Status]
&
@Status
=
[Status])
用这样一条简单的语句,就可以获取到所有符合@Status要求的数据行。
‘叁’ sql语句中 <>0什么意思
就是不等于0,<>是关系抄运算符的一袭种,常用的关系运算符有:
<,小于,例如a<b
<=,小于等于,例如a<=b
>,大于,例如a>b
>=,大于等于,例如a>=b
==,等于,例如a==b
!=,不等于,例如a!=b
(3)sql位运算扩展阅读:
运算符的优先级从高到低排列:
1、括号:( )
2、乘、除、求模运算符: * 、 / 、 %
3、加减运算符: + 、 -
4、比较运算符: = , > , < , >= , <= , <> , != , !> , !<
5、位运算符: ^ , & , |
6、逻辑运算符: NOT
7、逻辑运算符: AND
8、逻辑运算符: OR
‘肆’ SQL里的&和^是什么意思啊
&是位运算符号。
判断已过期/未过期的订单,使用(Status & 4) 是否等于零来判断。
‘伍’ sql中有没有位运算的函数
有,也是使用& | ~ ^
例如123|82
这样就会按位运算,然后返回的数是10进制的
‘陆’ T-SQL中的位运算~10等于多少能不能详细解答一下,谢谢
~ 是取反运算符, 所谓取反就是0变1,1变0。
10(D) = 0000 1010(B)
~10(D) = 1111 0101(B) = -11(D)
‘柒’ 求助关于SQL中的位运算问题
sql server中没有bool类型,而是用bit类型来表示bool值,估计是为了节省存储空间。
可是要想实现取反操作似乎就麻烦写了,比如类似下面这样的语句是不行的:update category set visible=not visible where id=1,因为visible是bit类型,而不是bool类型。
一个很有趣的问题发生了,我们发现在Sql Server中的bit类型的数据-1可以表示1,于是我们可以将上面的语句改成:
update category set visible=visible-1 where id=1
呵呵:当然也可以这样写了:update category set visible = 1-visible where id=1,这样就没有-1了,就只有0和1了。
‘捌’ sql中的^是什么意思
1.^位运算中是异或的意思,即
1^1=0,
0^1=1,
1^0=1,
0^0=0
2.在like表达式中^表示非得意思,如
select
name
from
tablename
where
name
like
'a[^1,2,3]c'
表示的是选取name字段中name值不包含a1c,a2c,a3c的其他值
‘玖’ sql 运算符
http://ke..com/view/425996.htm
个人觉得运算符并不多.网络下就知道啦
比较运算符
含义(示例)
=(等号) 等于 (A1=B1)
>(大于号) 大于 (A1>B1)
<(小于号) 小于 (A1<B1)
>=(大于等于号) 大于或等于 (A1>=B1)
<=(小于等于号) 小于或等于 (A1<=B1)
<>(不等号) 不相等 (A1<>B1)
下边的连接不知道对你有没有用去看看咯
http://wenku..com/view/aa243ff5f61fb7360b4c65e6.html
‘拾’ SQL查询中&&是什么意思
在SQL中是允许位运算的。&是位运算的一种,做用和and相似,但是是位运算,对每一位进行计算的。
如:
0000 1010 & 0000 1001 = 0000 1000
即0xa & 0x9 = 0x8
这类似的计算均称之为位运算。参与位运算的类型为整型。也就是说在SQL中bit,byte,smallint,int,long,及不带算号的都是可以进行计算的。但是对于float,decimal等则不参与这种运算。
在SQL中是不存在&&运算的,只有&运算。