sql语句中的逻辑运算:或、与、异或
2013-07-05 21:53
393 查看
文章转自:爱符号 http://www.afuhao.com/article_articleId-165.shtml
在讲SQL语句前,看看C#中,关于 或、与、异或 的操作吧,其它语言类似,就不多写了。javascript java 这些都是支持这个的
逻辑 或 操作
[csharp]
int i= 1 | 3;//或,结果是3,因为3里面包括1
int i= 1 | 2;//或,结果是3,1与2,所以是3
int i= 0 | 1;//或,结果是1,0不会影响任何结果
//其实 或 的操作需要先了解一些位操作
//一般这种唯一值是成2倍增长的,比如说:
//1 ,1*2=2,2*2=4,4*2=8,8*2=16,16*2=32....
//1 2 4 8 16 32
//原因:1 与2 的交集是3,所以3不能作为唯一值,所以是4,
// 1,2,4之间的交集会有很多,5,6 ,7 ,都会被占用,所以8才是唯一的,
//这个需要好好的体会
//其实按照数学的排列组合更加容易理解
//1 和 2 来随意组合就是:1+0=1,2+0=2,1+2=3,所有只有3种可能
//1 和 2 和 4 就会更多了
// 1+0=1,1+2=3,1+4=5,2+0=2,2+4=6,1+2+4=7,所有下一个只有8了
逻辑 与 操作
[csharp]
//异和或类似,但有些相反
int i = 3 & 1;//结果是1,因为3里面包括1的,如果想得到3,就是 3 & 3
//为什么要这样做?比如你知道两个变量,想判断其中一个变量是否被包含,就需要这样判断
//再来看看 或
int i = 1 | 2 | 4;//结果是 7
//那么如何知道 i 中已经有 2?
int j= i & 2;//结果j 为2就表示包含
//经常用于if判断
if ( (i & 2 )==2){
//注意 i & 2 要括起来,否则就会变成 i & ( 2 == 2)了,
}
再来看看 逻辑 异或 操作吧
[js]
//要理解异或,必须得明白 或
//所以下面的结果,可能会有些纳闷,
int i = 3 ^ 1;//2,为什么呢?因为3是 1 | 2 得到的,那么拉成一条直线来看,它们的序列是 1、2、3,所以1 和 3 里面只有2没有出了,所以结果就是2
//明白没有?两数之间 肯定有一种 或 的关系存在,异或就是两数之间剩下的那个数
//来看一组数据
//1 ^ 1; 1 | 0 =1,所以为 0 ;1 ^ 4;1 ^ 5;
//1 ^ 2; 1 和 2 都是独立的序列,所以1 | 2 =3,所以结果是3;
//1 ^ 3; 3 是 1 | 2 的结果,所以是2
//1 ^ 4; 1 和 4 都是独立的序列,所以 1 | 4,所以结果是5
//1 ^ 5; 5 是 1 | 4 的结果,所以是4
//还在头晕吗?,回味一下 或 的操作,再来看看 异或吧
下面来看看sql语句中的 异 或吧
[sql]
-- 或 与 异或
select 1 | 2, 1 & 2, 1 ^ 2
-- 3 , 0 , 3
select 1 | 3, 1 & 3, 1 ^ 3
-- 3 , 1 , 2
select 3 | 3, 3 & 3, 3 ^ 3
-- 3 , 3 , 0
select 1 | 0, 1 & 0, 1 ^ 0 -- 1 ^ 0 为1 的原因是 1 | 1 是0,也就是说 1 | 0 为1
-- 1 , 0 , 1
细细体会一下吧,不明白吗?
再体会一下,如果还不会,就过段时间来看吧。
这类操作经常用于权限判断,组合值判断。
文章转自:爱符号 http://www.afuhao.com/article_articleId-165.shtml
在讲SQL语句前,看看C#中,关于 或、与、异或 的操作吧,其它语言类似,就不多写了。javascript java 这些都是支持这个的
逻辑 或 操作
[csharp]
int i= 1 | 3;//或,结果是3,因为3里面包括1
int i= 1 | 2;//或,结果是3,1与2,所以是3
int i= 0 | 1;//或,结果是1,0不会影响任何结果
//其实 或 的操作需要先了解一些位操作
//一般这种唯一值是成2倍增长的,比如说:
//1 ,1*2=2,2*2=4,4*2=8,8*2=16,16*2=32....
//1 2 4 8 16 32
//原因:1 与2 的交集是3,所以3不能作为唯一值,所以是4,
// 1,2,4之间的交集会有很多,5,6 ,7 ,都会被占用,所以8才是唯一的,
//这个需要好好的体会
//其实按照数学的排列组合更加容易理解
//1 和 2 来随意组合就是:1+0=1,2+0=2,1+2=3,所有只有3种可能
//1 和 2 和 4 就会更多了
// 1+0=1,1+2=3,1+4=5,2+0=2,2+4=6,1+2+4=7,所有下一个只有8了
逻辑 与 操作
[csharp]
//异和或类似,但有些相反
int i = 3 & 1;//结果是1,因为3里面包括1的,如果想得到3,就是 3 & 3
//为什么要这样做?比如你知道两个变量,想判断其中一个变量是否被包含,就需要这样判断
//再来看看 或
int i = 1 | 2 | 4;//结果是 7
//那么如何知道 i 中已经有 2?
int j= i & 2;//结果j 为2就表示包含
//经常用于if判断
if ( (i & 2 )==2){
//注意 i & 2 要括起来,否则就会变成 i & ( 2 == 2)了,
}
再来看看 逻辑 异或 操作吧
[js]
//要理解异或,必须得明白 或
//所以下面的结果,可能会有些纳闷,
int i = 3 ^ 1;//2,为什么呢?因为3是 1 | 2 得到的,那么拉成一条直线来看,它们的序列是 1、2、3,所以1 和 3 里面只有2没有出了,所以结果就是2
//明白没有?两数之间 肯定有一种 或 的关系存在,异或就是两数之间剩下的那个数
//来看一组数据
//1 ^ 1; 1 | 0 =1,所以为 0 ;1 ^ 4;1 ^ 5;
//1 ^ 2; 1 和 2 都是独立的序列,所以1 | 2 =3,所以结果是3;
//1 ^ 3; 3 是 1 | 2 的结果,所以是2
//1 ^ 4; 1 和 4 都是独立的序列,所以 1 | 4,所以结果是5
//1 ^ 5; 5 是 1 | 4 的结果,所以是4
//还在头晕吗?,回味一下 或 的操作,再来看看 异或吧
下面来看看sql语句中的 异 或吧
[sql]
-- 或 与 异或
select 1 | 2, 1 & 2, 1 ^ 2
-- 3 , 0 , 3
select 1 | 3, 1 & 3, 1 ^ 3
-- 3 , 1 , 2
select 3 | 3, 3 & 3, 3 ^ 3
-- 3 , 3 , 0
select 1 | 0, 1 & 0, 1 ^ 0 -- 1 ^ 0 为1 的原因是 1 | 1 是0,也就是说 1 | 0 为1
-- 1 , 0 , 1
细细体会一下吧,不明白吗?
再体会一下,如果还不会,就过段时间来看吧。
这类操作经常用于权限判断,组合值判断。
文章转自:爱符号 http://www.afuhao.com/article_articleId-165.shtml
相关文章推荐
- sql语句逻辑运算优先级
- 使用JOOQ seek语句及动态SQL重写MySQL分页逻辑
- T-sql语句修改数据库逻辑名、数据库名、物理名(sql2000)
- SQL逻辑查询语句执行顺序
- 数字逻辑电路 逻辑运算 与、或、非、与非、或非、与或非、异或、同或
- SQL语句技巧:查询时巧用OR实现逻辑判断
- ASP实现SQL语句日期格式的加减运算
- SQL语句技巧--复杂逻辑的SQL简单实现(1)
- 把业务逻辑变成数据结构和SQL语句的例子。自然架构改成自然框架
- oracle sql语句中使用if逻辑
- T-SQL中逻辑控制语句
- SQL_3_表达式、条件语句与运算
- sql语句中字符型和数值型互转后运算问题
- Sql 查询语句中 Where条件语句中 元操作符的运算优先顺序
- linux命令逻辑运算:与、或、非、异或
- 在oracle中在两个整型值之间执行按位逻辑与运算的运算符是什么?类似sql中的
- 详细剖析SQL查询(select语句)的每一步的逻辑处理---查询顺序及逻辑处理过程
- 单条SQL语句实现复杂逻辑几例(转)
- 【转】SqlServer中用SQL语句附加数据库及修改数据库逻辑文件名
- 使用异或运算和与运算求取二者最大值和最小值(不使用判断语句求二者最小值)