关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

MySQL-运算符

发布时间:2023-06-30 20:00:44
算术运算符 +: 加法运算-: 减法运算*: 乘法运算/: 除法运算,返回商%: 求余运算,返回余数 例:创建n5表,插入数字100,查看数据表分别查看+、-、*、/、% 1. mysql> create table n5( 2. -> num int); 3. Query OK, 0 rows affected (0.00 sec) 4. 5. mysql> insert into n5 values(100); 6. Query OK, 1 row affected (0.00 sec) 7. 8. mysql> select num, num+3,num-3,num*3,num/3,num%3 from n5; 9. +------+-------+-------+-------+---------+-------+ 10. | num | num+3 | num-3 | num*3 | num/3 | num%3 | 11. +------+-------+-------+-------+---------+-------+ 12. | 100 | 103 | 97 | 300 | 33.3333 | 1 | 13. +------+-------+-------+-------+---------+-------+ 14. 1 row in set (0.00 sec) 运算符 作用 = 等于 <=> 安全的等于 <> 不等于,也可写成!= <= 小于等于 >= 大于等于 > 大于 IS NULL 判断一个值是否为NULL IS NOT NULL 判断一个值是否不为NULL LEAST 当有两个或多个参数时,返回最小值 GREATEST 当有两个或多个参数时,返回最大值 BETWEEN AND 判断一个值是否落在两个值之间 ISNULL与IS NULL 作用相同 IN 判断一个值是否是IN列表中的任意一个值 NOT IN 判断一个值是否不是IN列表中的任意一个值 LIKE 通配符匹配 REGEXP 正则表达式匹配 等于运算符 ( = ) 等于运算符用来判断数字、字符串和表达式是否相等,如果相等,则返回值为 1 ,否则返回值为 0 ,如果有一个值是 NULL ,则比较结果为 NULL。 1. mysql> select 1=0,'2'=2,(1+3)=(2+2),NULL=NULL; 2. +-----+-------+-------------+-----------+ 3. | 1=0 | '2'=2 | (1+3)=(2+2) | NULL=NULL | 4. +-----+-------+-------------+-----------+ 5. | 0 | 1 | 1 | NULL | 6. +-----+-------+-------------+-----------+ 7. 1 row in set (0.01 sec) 安全等于运算符 ( <=> ) 这个操作符和等于运算符(=)的作用一致,只不过多了一个功能,就是可以判断 NULL 值。 1. mysql> select 1<=>0,'2'<=>2,(1+3)<=>(2+2),NULL<=>NULL; 2. +-------+---------+---------------+-------------+ 3. | 1<=>0 | '2'<=>2 | (1+3)<=>(2+2) | NULL<=>NULL | 4. +-------+---------+---------------+-------------+ 5. | 0 | 1 | 1 | 1 | 6. +-------+---------+---------------+-------------+ 7. 1 row in set (0.00 sec) 不等于运算符 ( <> 或 != ) 不等于运算符用于判断数字、字符串、表达式是否不相等,如果不相等则返回 1,否则返回 0 ,但是不能判断NULL 值。 1. mysql> select 'good'<>'god',1<>2,4!=4,5.5!=5,NULL<>NULL; 2. +---------------+------+------+--------+------------+ 3. | 'good'<>'god' | 1<>2 | 4!=4 | 5.5!=5 | NULL<>NULL | 4. +---------------+------+------+--------+------------+ 5. | 1 | 1 | 0 | 1 | NULL | 6. +---------------+------+------+--------+------------+ 7. 1 row in set (0.00 sec) IS NULL 、ISNULL 、IS NOT NULL IS NULL 和 ISNULL 检验一个值是否为 NULL ,如果为 NULL ,返回值为 1,否则返回值为 0。 IS NOT NULL 检验一个值是否不为 NULL ,如果不为 NULL ,返回值为 1,否则返回值为 0。 1. mysql> select null is null,isnull(null),isnull(10),10 is not null; 2. +--------------+--------------+------------+----------------+ 3. | null is null | isnull(null) | isnull(10) | 10 is not null | 4. +--------------+--------------+------------+----------------+ 5. | 1 | 1 | 0 | 1 | 6. +--------------+--------------+------------+----------------+ 7. 1 row in set (0.00 sec) BETWEEN AND 用于判断一个值是否落在两个值之间 1. mysql> select 4 between 2 and 5,4 between 4 and 6, 12 between 9 and 10; 2. +-------------------+-------------------+---------------------+ 3. | 4 between 2 and 5 | 4 between 4 and 6 | 12 between 9 and 10 | 4. +-------------------+-------------------+---------------------+ 5. | 1 | 1 | 0 | 6. +-------------------+-------------------+---------------------+ 7. 1 row in set (0.00 sec) LEAST 、GREATEST LEAST :当有两个或多个参数时,返回最小值,如果有一个值是 NULL ,则返回结果为 NULL GREATEST :当有两个或多个参数时,返回最大值,如果有一个值是 NULL ,则返回结果为 NULL 1. mysql> select least(2,0),least('a','c','b'),least(10,null),greatest(2,0),greatest(10,null); 2. +------------+--------------------+----------------+---------------+-------------------+ 3. | least(2,0) | least('a','c','b') | least(10,null) | greatest(2,0) | greatest(10,null) | 4. +------------+--------------------+----------------+---------------+-------------------+ 5. | 0 | a | NULL | 2 | NULL | 6. +------------+--------------------+----------------+---------------+-------------------+ 7. 1 row in set (0.00 sec) IN 、NOT IN IN :判断一个值是否是 IN 列表中的任意一个值 NOT IN :判断一个值是否不是 IN 列表中的任意一个值 1. mysql> select 2 in (1,3,5), 2 not in (1,3,5); 2. +--------------+------------------+ 3. | 2 in (1,3,5) | 2 not in (1,3,5) | 4. +--------------+------------------+ 5. | 0 | 1 | 6. +--------------+------------------+ 7. 1 row in set (0.00 sec) LIKE LIKE 运算符用来匹配字符串,如果匹配则返回 1,如果不匹配则返回 0 LIKE 使用两种通配符:'%' 用于匹配任何数目的字符,包括零字符 ; '_' 只能匹配一个字符 1. mysql> SELECT 'stud' LIKE 'stu_', 'stud' LIKE 's___', 'stud' LIKE '%d'; 2. +--------------------+--------------------+------------------+ 3. | 'stud' LIKE 'stu_' | 'stud' LIKE 's___' | 'stud' LIKE '%d' | 4. +--------------------+--------------------+------------------+ 5. | 1 | 1 | 1 | 6. +--------------------+--------------------+------------------+ 7. 1 row in set (0.00 sec) REGEXP REGEXP 运算符用来匹配字符串,如果匹配则返回 1,如果不匹配则返回 0 REGEXP 使用几种通配符: '^' 用于匹配以什么开头的字符串'$' 用于匹配以什么结尾的字符串'.' 用于匹配任何一个单字符串'[...]' 用于匹配在方括号内的任何字符'*' 用于匹配零个或多个在它前面的字符 1. mysql> SELECT 'ssky' REGEXP '^s', 'ssky' REGEXP 'y$', 'ssky' REGEXP '.sky', 'ssky' REGEXP '[ab]'; 2. +--------------------+--------------------+----------------------+-----------------------+ 3. | 'ssky' REGEXP '^s' | 'ssky' REGEXP 'y$' | 'ssky' REGEXP '.sky' | 'ssky' REGEXP '[ab]' | 4. +--------------------+--------------------+----------------------+-----------------------+ 5. | 1 | 1 | 1 | 0 | 6. +--------------------+--------------------+----------------------+-----------------------+ 7. 1 row in set (0.00 sec) 逻辑运算符 运算符 作用 NOT或! 逻辑非 AND或&& 逻辑与 OR或|| 逻辑或 XOR 逻辑异或 逻辑非 ( NOT 或 !) 当操作数为 0 时,所得值为 1 当操作数为非 0 时,所得值为 0 当操作数为 NULL 时,所得值为 NULL 1. mysql> SELECT NOT 10, !10, NOT (1-1), !(1-1), NOT 1+1, NOT NULL; 2. +--------+-----+-----------+--------+---------+----------+ 3. | NOT 10 | !10 | NOT (1-1) | !(1-1) | NOT 1+1 | NOT NULL | 4. +--------+-----+-----------+--------+---------+----------+ 5. | 0 | 0 | 1 | 1 | 0 | NULL | 6. +--------+-----+-----------+--------+---------+----------+ 7. 1 row in set (0.04 sec) 逻辑与 ( AND 或 && ) 当所有操作数均为非零值、并且不为 NULL 时,所得值为 1 当一个或多个操作数为 0 时,所得值为 0 其余情况所得值为 NULL 1. mysql> SELECT 1 AND -1, 1 && 0, 0 AND NULL, 1 && NULL; 2. +----------+--------+------------+-----------+ 3. | 1 AND -1 | 1 && 0 | 0 AND NULL | 1 && NULL | 4. +----------+--------+------------+-----------+ 5. | 1 | 0 | 0 | NULL | 6. +----------+--------+------------+-----------+ 7. 1 row in set (0.00 sec) 逻辑或 ( OR 或 || ) 当两个操作数均为非 NULL 值,且任意一个操作数为非零值时,结果为 1 ,否则为 0 当有一个操作数为 NULL ,且另一个操作数为非零值时,则结果为 1 ,否则结果为 NULL 当两个操作数均为 NULL 时,则所得结果为 NULL 1. mysql> SELECT 1 OR -1 OR 0, 1 || 2, 0 OR NULL, NULL || NULL; 2. +--------------+--------+-----------+--------------+ 3. | 1 OR -1 OR 0 | 1 || 2 | 0 OR NULL | NULL || NULL | 4. +--------------+--------+-----------+--------------+ 5. | 1 | 1 | NULL | NULL | 6. +--------------+--------+-----------+--------------+ 7. 1 row in set (0.01 sec) 逻辑异或 ( XOR ) a XOR b 的计算等同于 ( a AND (NOT b) ) 或 ( (NOT a) AND b ) 当任意一个操作数为 NULL 时,返回值为 NULL 对于非 NULL 的操作数,如果两个操作数都是非 0 值或者都是 0 值,则返回结果为 0 如果一个为 0 值,另一个为非 0 值,返回结果为 1 1. mysql> SELECT 1 XOR 1, 0 XOR 0, 1 XOR 0, 1 XOR NULL, 1 XOR 1 XOR 1; 2. +---------+---------+---------+------------+---------------+ 3. | 1 XOR 1 | 0 XOR 0 | 1 XOR 0 | 1 XOR NULL | 1 XOR 1 XOR 1 | 4. +---------+---------+---------+------------+---------------+ 5. | 0 | 0 | 1 | NULL | 1 | 6. +---------+---------+---------+------------+---------------+ 7. 1 row in set (0.02 sec) 位运算符 运算符 作用 | 位或 & 位与 ^ 位异或 << 位左移 >> 位右移 ~ 位取反 位或运算符 ( | ) 对应的二进制位有一个或两个为 1 ,则该位的运算结果为 1 ,否则为 0 1. mysql> select 10|15,9|4|2; 2. +-------+-------+ 3. | 10|15 | 9|4|2 | # 10的二进制为1010,15的二进制为1111,按位或运算之后结果为1111,即15 4. +-------+-------+ # 9的二进制为1001,4为0100,2的二进制为0010,按位或运算之后1111 5. | 15 | 15 | 6. +-------+-------+ 7. 1 row in set (0.00 sec) 位与运算符 ( & ) 对应的二进制位都为 1 ,则该位的运算结果为 1 ,否则为 0 1. mysql> SELECT 10&15,9&4&2; 2. +-------+-------+ 3. | 10&15 | 9&4&2 | 4. +-------+-------+ 5. | 10 | 0 | 6. +-------+-------+ 7. 1 row in set (0.00 sec) 位异或运算符 ( ^ ) 对应的二进制位不相同时,结果为 1 ,否则为 0 1. mysql> SELECT 10^15,1^0,1^1; 2. +-------+-----+-----+ 3. | 10^15 | 1^0 | 1^1 | 4. +-------+-----+-----+ 5. | 5 | 1 | 0 | 6. +-------+-----+-----+ 7. 1 row in set (0.00 sec) 位左移运算符 ( << ) 使指定的二进制位都左移指定的位数,左移指定位之后,左边高位的数值将被移出并丢弃,右边低位空出的位置用 0 补齐 1. mysql> select 1<<2,4<<2; 2. +------+------+ 3. | 1<<2 | 4<<2 | # 1的二进制值为00000001,左移两位之后变成00000100,即十进制数4 4. +------+------+ 5. | 4 | 16 | # 4的二进制值为00000100,左移两位之后变成00010000,即十进制数16 6. +------+------+ 7. 1 row in set (0.00 sec) 位右移运算符 ( >> ) 使指定的二进制位都右移指定的位数,右移指定位之后,右边低位的数值将被移出并丢弃,左边高位空出的职位用 0 补齐 1. mysql> select 1>>1, 16>>2; 2. +------+-------+ 3. | 1>>1 | 16>>2 | 4. +------+-------+ 5. | 0 | 4 | 6. +------+-------+ 7. 1 row in set (0.00 sec) 位取反运算符 ( ~ ) 将对应的二进制数逐位反转,即 1 取反后变 0 , 0 取反后变 1 1. mysql> select 5 &~1; 2. +-------+ 3. | 5 &~1 | 4. +-------+ 5. | 4 | 6. +-------+ 7. 1 row in set (0.00 sec)

/template/Home/leiyu/PC/Static