菜单

mssql sqlserver SQL 位运算举例权限行使

2019年3月31日 - MySQL

转自:http://www.maomao365.com/?p=6873

manbetx网页手机登录版,摘要:

摘要:
下文通过案例解析in 关键字在值为null的选择举例,
剖析出not in关键字在null值发生的要命新闻
正如所示:

下文通过举例的办法讲述sqlserver中位运算的连锁文化,如下所示:
实验环境:sqlserver 二〇一〇 奇骏2

CREATE TABLE testA(keyId INT)
CREATE TABLE testB(keyId INT)
GO
INSERT INTO testA(keyId) VALUES (1)
INSERT INTO testA(keyId) VALUES (2)
INSERT INTO testA(keyId) VALUES (3)
GO
INSERT INTO testB(keyId) VALUES (1)
INSERT INTO testB(keyId) VALUES (2)
INSERT INTO testB(keyId) VALUES (4)
INSERT INTO testB(keyId) VALUES (NULL)
GO
 SELECT * FROM testA WHERE keyId IN (SELECT keyId FROM testB)
-----输出------
/*
keyId
1
2
*/
 SELECT * FROM testA WHERE keyId not IN (SELECT keyId FROM testB)
------无输出记录-----
/*
keyId
*/
INSERT INTO testA VALUES (NULL) ---在testA表中插入空值
SELECT * FROM testA WHERE EXISTS(
    SELECT null  FROM testB WHERE testA.keyId=testB.keyId    
)
----输出----
/*
keyId
1
2
*/
SELECT * FROM testA WHERE not  EXISTS(
    SELECT null  FROM testB WHERE testA.keyId=testB.keyId    
)
/*
keyId
3
NULL
*/
SELECT * FROM testA WHERE testA.keyId NOT in (
    SELECT testB.keyId FROM testB WHERE testB.keyId IS NOT NULL    
)

drop table testA
drop table testB

 

 

通过上述测试,大家得以观看not in
查询关键字假诺子表中存在空值,则无法查询出别样笔录,会造成万分产生,

需选择not
exists获取相应的空值信息

在sqlserver的权能设置,大家日常使用一 、二 、肆 、八 、1六 、3贰 、6肆 、128等数值分别表示相关新闻的某一场地供工作意况使用,通过字段值之间的整合形成三个气象值存款和储蓄到数据库中,
安装八个剧中人物有所的权限
例:
1:代表“查看”按钮权限
2:代表”修改”按钮
4:代表”导出”按钮
8:代表”删除”按钮

--例:
--权限表如下:
create table userRole(userId varchar(36),
roleInfo int);
go

insert into userRole(userId,roleInfo)values('test',1) ---初始化测试账号"test",拥有查看权限
insert into userRole(userId,roleInfo)values('猫猫',2) 
--当我们需要给用户加入修改"2"权限,则可以使用以下运算
update userRole set roleInfo =roleInfo|2 where userId ='test'


--当我们需要给用户加入导出"4"权限,则可以继续使用以下运算
update userRole set roleInfo =roleInfo|4 where userId ='test'


--当我们需要给用户删除导出"4"权限,则可以继续使用以下运算
--删除权限前需判断用户是否存在此权限,此脚本不可多次运行
--if exists (select null from userRole where roleInfo &4 =4 and userId ='test')
---begin
update userRole set roleInfo =roleInfo^4 where userId ='test' and roleInfo&4 =4 
--end
---我们检索所有拥有权限"修改2"的用户信息
select * from userRole where roleInfo &2 = 2

go
truncate table userRole
drop table userRole

 

注意事项:

此间权限设置,首要采用二进制中每一个人代表3个权力及位运算的风味开始展览权力的增减操作
出于”^异或运算”运算,左表达式1或0 时
右表明式为1时,将独家发生0、1,所以剔除权限时,一定要一口咬住不放是或不是留存此权限

 转自:http://www.maomao365.com/?p=7137

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图