深入浅出mysql-mysql中的运算符

来源:互联网 发布:如何新建数据库表 编辑:程序博客网 时间:2024/06/05 21:16

4. mysql中的预算符


4.1 算术运算符


+  加法
-  减法
*  乘法
/,DIV  除法,返回商
%,MOD  除法,返回余数


范例


下例中简单地描述了这几种运算符的使用方法:
mysql> select 0.1+ 0.3333 ,0.1-0.3333, 0.1*0.3333, 1/2,1%2;
+-------------+------------+------------+--------+------+
| 0.1+ 0.3333 | 0.1-0.3333 | 0.1*0.3333 | 1/2 | 1%2 |
+-------------+------------+------------+--------+------+
| 0.4333 | -0.2333 | 0.03333 | 0.5000 | 1 |
+-------------+------------+------------+--------+------+
1 row in set (0.00 sec)


4.2 比较运算符


= 等于
<> 或 != 不等于
<=> NULL的安全等于
< 小于
<= 小于等于
> 大于
>= 大于等于
BETWEEN 存在于指定范围内
IN 存在于指定集合
IS NULL 为NULL
IS NOT NULL 不为NULL
LIKE 通配符匹配
REGEXP 或者 RLIKE 正则表达式匹配


“=”运算符


是什么


用于比较运算符两侧的操作数是否相等,如果两侧操作数相等返回值为 1,否则为 0


范例


mysql> select 1=0,1=1,NULL=NULL;
+-----+-----+-----------+
| 1=0 | 1=1 | NULL=NULL |
+-----+-----+-----------+
| 0 | 1 | NULL |
+-----+-----+-----------+
1 row in set (0.00 sec)


“<>”运算符


是什么


和“=”相反,如果两侧操作数不等,则值为 1,否则为 0。


“<=>”安全的等于运算符


是什么


安全的等于运算符,和“=”类似,在操作数相等时值为 1,不同之处在于即使操作的值为 NULL 也可以正确比较。


“<”运算符


是什么


当左侧操作数小于右侧操作数时,其返回值为 1,否则其值为 0。


“<=”运算符


是什么


当左侧操作数小于等于右侧操作数时,其返回值为 1,否则返回值为 0。


“>”运算符


是什么


,当左侧操作数大于右侧操作数时,其返回值为 1,否则返回值为 0。


.....


BETWEEN


是什么


使用格式为“a BETWEEN min AND max”,当 a 大于等于 min 并且小于等于 max,则返回值为 1,否则返回 0


范例


mysql> select 10 between 10 and 20, 9 between 10 and 20;
+----------------------+---------------------+
| 10 between 10 and 20 | 9 between 10 and 20 |
+----------------------+---------------------+
| 1 | 0 |
+----------------------+---------------------+
1 row in set (0.00 sec)


IN


是什么


使用格式: a IN (value1, value2),当 a 的值存在于列表中时,则整个比较表达式返回的值为 1,否则返回 0。


范例


mysql> select 1 in (1,2,3) , 't' in ('t','a','b','l','e'),0 in (1,2);
+--------------+------------------------------+------------+
| 1 in (1,2,3) | 't' in ('t','a','b','l','e') | 0 in (1,2) |
+--------------+------------------------------+------------+
| 1 | 1 | 0 |
+--------------+------------------------------+------------+
1 row in set (0.00 sec)


IS NULL


是什么


使用格式为“a IS NULL”,当 a 的值为 NULL,则返回值为 1,否则返回 0。


范例


mysql> select 0 is null, null is null;
+-----------+--------------+
| 0 is null | null is null |
+-----------+--------------+
| 0 | 1 |
+-----------+--------------+
1 row in set (0.02 sec)


IS NOT NULL


是什么


运算符的使用格式为“a IS NOT NULL”。和“IS NULL”相反,当 a 的值不为 NULL,则返回值为 1,否则返回 0。


范例


mysql> select 0 is not null, null is not null;
+----------------+-------------------+
| 0 is not null | null is not null |
+----------------+-------------------+
| 1 | 0 |
+----------------+-------------------+
1 row in set (0.00 sec)


LIKE


是什么


运算符的使用格式为“a LIKE %123%”,当 a 中含有字符串“123”时,则返回值为 1,否则返回 0。


范例


mysql> select 123456 like '123%',123456 like '%123%',123456 like '%321%';
+--------------------+---------------------+---------------------+
| 123456 like '123%' | 123456 like '%123%' | 123456 like '%321%' |
+--------------------+---------------------+---------------------+
| 1 | 1 | 0 |
+--------------------+---------------------+---------------------+
1 row in set (0.00 sec)


REGEXP /RLIKE


是什么


运算符的使用格式为“str REGEXP str_pat”,当 str 字符串中含有 str_pat相匹配的字符串时,则返回值为 1,否则返回 0


范例


mysql> select 'abcdef' regexp 'ab' ,'abcdefg' regexp 'k';
+----------------------+----------------------+
| 'abcdef' regexp 'ab' | 'abcdefg' regexp 'k' |
+----------------------+----------------------+
| 1 | 0 |
+----------------------+----------------------+
1 row in set (0.00 sec)


4.3 逻辑运算符


NO或“!”表示逻辑非


是什么


当操作数为 0(假),则返回值为 1,否则值为 0。但是有一点除外,那就是 NOT NULL 的返回值为 NULL,


范例


mysql> select not 0, not 1, not null ;
+-------+-------+----------+
| not 0 | not 1 | not null |
+-------+-------+----------+
| 1 | 0 | NULL |
+-------+-------+----------+
1 row in set (0.00 sec)


AND”或“&&”表示逻辑与运算


是什么


当所有操作数均为非零值并且不为 NULL 时,计算所得结果为 1,当一个或多个操作数为 0 时,所得结果为 0,操作数中有任何一个为NULL 则返回值为 NULL


范例


mysql> select (1 and 1),(0 and 1) ,(3 and 1 ) ,(1 and null);
+-----------+-----------+------------+--------------+
| (1 and 1) | (0 and 1) | (3 and 1 ) | (1 and null) |
+-----------+-----------+------------+--------------+
| 1 | 0 | 1 | NULL |
+-----------+-----------+------------+--------------+
1 row in set (0.00 sec)


OR”或“||”表示逻辑或运算。


是什么


当两个操作数均为非 NULL 值时,如有任意一个操作数为非零值,则结果为 1,否则结果为 0。当有一个操作数为 NULL 时,如另一个操作数为非零值,则结果为 1,否则结果为 NULL


范例


mysql> select (1 or 0) ,(0 or 0),(1 or null) ,(1 or 1),(null or null);
+----------+----------+-------------+----------+----------------+
| (1 or 0) | (0 or 0) | (1 or null) | (1 or 1) | (null or null) |
+----------+----------+-------------+----------+----------------+
| 1 | 0 | 1 | 1 | NULL |
+----------+----------+-------------+----------+----------------+
1 row in set (0.00 sec) 


XOR表示逻辑异或


是什么


当任意一个操作数为 NULL 时,返回值为 NULL。对于非 NULL 的操作数,如果两个的逻辑真假值相异,则返回结果 1;否则返回 0。


范例


mysql> select 1 xor 1 ,0 xor 0,1 xor 0,0 xor 1,null xor 1;
+---------+---------+---------+---------+------------+
| 1 xor 1 | 0 xor 0 | 1 xor 0 | 0 xor 1 | null xor 1 |
+---------+---------+---------+---------+------------+
| 0 | 0 | 1 | 1 | NULL |
+---------+---------+---------+---------+------------+
1 row in set (0.00 sec)


4.4 位运算符


&  位与(位 AND)


是什么


对多个操作数的二进制位作逻辑与操作,


范例


mysql> select 2&3&4;
+-------+
| 2&3&4 |
+-------+
| 0 |
+-------+
1  row in set (0.00 sec)


| 位或操作


是什么


多个操作数的二进制位作逻辑或操作


范例


mysql> select 2|3;
+-----+
| 2|3 |
+-----+
| 3 |
+-----+
1 row in set (0.00 sec)


^ 位抑或


是什么


对操作数的二进制位做异或操作


范例


mysql> select 2^3;
+-----+
| 2^3 |
+-----+
| 1 |
+-----+
1 row in set (0.00 sec)


~ 位取反


是什么


对操作数的二进制位作 NOT 操作


范例


mysql> select ~1 ,~ 18446744073709551614;
+----------------------+------------------------+
| ~1 | ~ 18446744073709551614 |
+----------------------+------------------------+
| 18446744073709551614 | 1 |
+----------------------+------------------------+
1 row in set (0.00 sec)


常量数字默认会以 8 个字节来表示,8 个字节就是 64 位,常量 1 的二进制表示为 63 个“0”加1个“1”,位取反后就是63个“1”加一个“0”,转换为二进制后就是18446744073709551614,


>> 位右移


是什么


左操作数向右移动右操作数指定的位数


范例


mysql> select 100>>3;
+--------+
| 100>>3 |
+--------+
| 12 |
+--------+
1 row in set (0.00 sec)
就是对 100 的二进制数 0001100100 右移 3 位,左边补 0,结果是 0000001100,转换为二进制数是 12,


<< 位左移


是什么


左操作数向左移动右操作数指定的位数


范例


mysql> select 100<<3;
+--------+
| 100<<3 |
+--------+
| 800 |
+--------+
1 row in set (0.00 sec)
对 100 的二进制数 0001100100 左移 3 位,右边补 0,结果是 1100100000,转换为二进制数是 800


运算符的优先级


1  :=
2  ||, OR, XOR
3  &&, AND
4  NOT
5  BETWEEN, CASE, WHEN, THEN, ELSE
6  =, <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
7  |
8  &
9  <<, >>
10  -, +
11  *, /, DIV, %, MOD
12  ^
13  - (一元减号), ~ (一元比特反转)
14  !

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 头发鬓高怎么办 鬃狮蜥下蛋了怎么办 鬃狮蜕皮怎么办 小鬃狮蜥吃多了怎么办 鬃狮蜥缺钙怎么办 鬃狮蜥蒙皮怎么办 鬃狮蜥受伤了怎么办? 狮子掉鬃毛怎么办 头上有狮子怎么办 人碰到鬣狗怎么办 gmat数学差怎么办 摄像头网络断开怎么办 报名网站打不开怎么办 手机出现蓝屏怎么办 蓝屏0xoooooo7e怎么办 电脑蓝屏突然怎么办 hkc电脑蓝屏怎么办? 公司不放人怎么办 科三引考是警察怎么办 农家乐停车场车怕晒怎么办 碰到可疑车辆怎么办 手机配置低怎么办 手机按键错乱怎么办 遥控器按键错乱怎么办 烧饼修改器打不开怎么办 电脑不信任wifi怎么办 手机不信任电脑怎么办 应用程序没了怎么办 山猫爪拿早了怎么办 BP写好了怎么办 滑板沾水怎么办 交际能力差怎么办 公司章程丢失怎么办 膝关节酸痛怎么办 手伤筋劳损怎么办 儿童半月板受损怎么办 半月板损伤疼怎么办 高中文学社应该怎么办 德育作业零花钱怎么办 四年级英语差怎么办 葫芦丝音不准怎么办