300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 将不确定变为确定~SQLSERVER是否可以进行位运算?

将不确定变为确定~SQLSERVER是否可以进行位运算?

时间:2019-03-29 16:35:00

相关推荐

将不确定变为确定~SQLSERVER是否可以进行位运算?

数据库|mysql教程

不确定,变为,确定,SQLSERVER,是否,可以,进行,运

数据库-mysql教程

新云网站源码,ubuntu 快速切换内核,python 爬虫数据入库,PHP酷站,seo陈建立lzw

回到目录 有时,我们在设计表结构时,有的字段可能同时具有几种状态,如小微自己的文件属性也是属于这种情况的,只读,归档,隐藏,但你对一个文件设置属性时,事实上是可以将这三个属性同时赋予一个对象的,这对于我们来说是正常的,那程序内部是怎么实现的

易语言飞车源码,ubuntu 软件园,爬虫之超时处理,php直销系统php直播源码,优化seo导航lzw

飞车辅助源码,手机内核 @ubuntu,tomcat 不允许匿名,爬虫政府信息,php网站显示禁止访问,vue seolzw

回到目录

有时,我们在设计表结构时,有的字段可能同时具有几种状态,如小微自己的文件属性也是属于这种情况的,“只读,归档,隐藏”,但你对一个文件设置属性时,事实上是可以将这三个属性同时赋予一个对象的,这对于我们来说是正常的,那程序内部是怎么实现的呢?

首先一个枚举,SQL里可能是一张表,也可能是事先规定好的几个值,如:只读1,归档2,隐藏3

再没有看.net源代码时,我认为可能是这样存储的

文件属性为只读+归档,值为:1,2

我们看到它是用,分开的,然后再分别去求和就可以了

但当我看了.net源代码后,我的作法有了一个变化,那就是利用位移运算,应该说从性能到程序清晰度上有一个飞跃

文件属性为只读+归档,值为:3 (3=1+2)

当然我们需要在数据库中查询出包含归档(2)的属性的记录时,如何去实现呢

其实,SQL与C#里的位移运算符号是完全相同的,它有以下几种情况

1 update User_Info set Status = Status | 8 where UserID = 1 --更新user_info里的status字段,在原有基础上增加82 3 update User_Info set Status = Status & (~8) where UserID = 1 --更新user_info里的status字段,在原有基础上减去8,如果原来的值中不包含8,那会在原来的值上加上8 4 5 select * from Userwhere Status & 8 >0 --找到所到包括8的记录

呵呵,怎么样,挺方便吧,这只是表面的,事实上,它在查询上性能也远远高于第一种拼接字符的方法。

回到目录

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。