运算符
算数运算符
MySQL支持大多数通用的、允许我们执行计算的的算数运算符。
“+(加法)、-(减法)、*(乘法)、/(除法,返回商)、%(除法,返回余数)”,如下例:select 1+2;//加法运算,结果为3
select 2-1;//减法运算,结果为1
select 3*2;//乘法运算,结果为6
select 6/2;//除法运算,结果为3
select 25%7;//除法运算,结果为4
select 5/0;//除法运算,结果为null,MySQL除法的除数为0是不允许的
请注意,所有涉及整数的数学运算都是用64位的精度进行计算。
用字符串表示的数字在任何可能便于计算的地方都被自动的转换为字符串。遵循两个转换原则:
1:如果第一位是数字的字符串被用于算数运算中,那么它被转换为这个数字的值
2:如果一个包含字符和数字混合的字符串不能被正确的转换为数字,将被转换成0select ‘100’+’004’;//结果为104
select ‘90AA’+’0’;//结果为90
select ‘10x’*’qwe’;//结果0
比较运算符
比较运算符,允许我们对表达式的左边和右边进行比较,一个比较运算的结果总是1(真),0(假)或为null(不确定)。select 6=6,3.4=4.5,’a’=’b’;//判断两边是否相等
select 7<>7,7<>8,’a’<>’b’;//判断两边是否不相等
select 100>100,10<100;//判断左边是否大于右边,左边是否小于右边
select 10>=100,10<=1;//判断左边是否大于等于右边,左边是否小于等于右边
select 10 between 0 and 100;//检验一个值是否存在于一个指定的范围内
select 10 not between 11 and 100;//检验一个值是否不存在于一个指定的范围内
select 7 in (1,2,3,4,5,6,7,8,9);//检验一个值是否包含在一个指定的值集合中
select 7 not in (1,2,3,4,5,6,7,8,9);//检验一个值是否不包含在一个指定的值集合中
默认情况下,比较是不区分大小写的。我们可以用binary关键字来执行区分大小写的运算
select binary ‘ross’ in (‘Chandler’,’Joey’,’Ross’);
逻辑运算符
逻辑运算符可以测试1个或者多个表达式(或表达式集合)的逻辑有效性。含有这些运算符的运算结果总是1(真),0(假)或null(不能确定)
逻辑运算符中最简单的运算符是not运算符,它对跟在它后面的逻辑测试判断取反,把真变为假,把假变为真
select not 1,not 0,not (2=2),not (100>20);//结果为0,1,0,1
and 运算符可以测试两个或更多的值(或表达式求值)的有效性,如果它的所有成分为真并且不是null,它返回真值,否则返回假值
select (2=2) and (900<100),(‘a’=’a’) and (‘c’
or 运算符,如果包含的值或者表达式值为真并且不是null,它返回真值,否则返回假值。
select (2=2) or (900<100),(‘a’=’a’) or (‘c’
MySQL4.x和更高版本中还包括了一个附加的xor运算符,如果它的参数中的一个(不是两个)为真,它返回真值。
select (1=1) xor (2=4),(1<2) xor (9<10);//返回结果为1,0
位运算符
位运算符
MySQL包含了6个专门用于位操作的运算符
“|”运算符用于执行一个位or操作,而&用于执行一个位and操作。
Case:
select 16|32,9|4;//结果为48,13
select 30 & 10,8 & 16;//结果10,0
还可以分别使用<>运算符向左和向右移动位。
select 1<<7,64>>1;//结果为128,32
^运算符执行位xor操作
select 1^0,0^1,17^9,143^66;//结果为1,1,24,205
~运算符执行位取反操作,并返回64位整型结果
select ~18446744073709551614,~1;
//结果为1,18446744073709551614