MySQL-运算符的使用解析

这篇具有很好参考价值的文章主要介绍了MySQL-运算符的使用解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


MySQL支持各种类型的运算符,这些运算符可以用于处理数字、日期和字符串等不同类型的数据。

1 运算符概述

MySQL支持各种类型的运算符,这些运算符可以用于处理数字、日期和字符串等不同类型的数据。以下是一些MySQL支持的常用运算符:

算术运算符:加号(+)、减号(-)、乘号(*)、除号(/),求余(%)

比较运算符:等于(=)、不等于(<>)、小于(<)、大于(>)、小于等于(<=)、大于等于(>=)、LIKE(用于模式匹配)、IN(用于多个值比较)和BETWEEN(用于范围比较),IS NULL,GREATEST,LEAST,LIKE,REGEXP等。

逻辑运算符:TURE(1),FALSE(0),还有逻辑非(NOT 或者 !),逻辑与(AND 或者 &&),逻辑或(OR 或者 ||),逻辑异或(XOR)。

位运算符:包括位与(&),位或(|),位非(~),位异或(^),左移(<<),右移(>>)。

2 算数运算符

算数运算符是SQL中最基本的运算符。
MySQL-运算符的使用解析
创建测试表,进行加减法和乘除法的运算测试。

mysql> CREATE TABLE tab_08 ( num INT);
Query OK, 0 rows affected (0.02 sec)

mysql> INSERT INTO tab_08 value(64);
Query OK, 1 row affected (0.01 sec)

mysql> SELECT num, num+10, num-3+5, num+5-3, num+36.5 FROM tab_08;
+------+--------+---------+---------+----------+
| num  | num+10 | num-3+5 | num+5-3 | num+36.5 |
+------+--------+---------+---------+----------+
|   64 |     74 |      66 |      66 |    100.5 |
+------+--------+---------+---------+----------+
1 row in set (0.00 sec)

mysql> SELECT num, num *2, num /2, num/3, num%3 FROM tab_08;
+------+--------+---------+---------+-------+
| num  | num *2 | num /2  | num/3   | num%3 |
+------+--------+---------+---------+-------+
|   64 |    128 | 32.0000 | 21.3333 |     1 |
+------+--------+---------+---------+-------+
1 row in set (0.00 sec)

mysql> SELECT num, num / 0, num %0 FROM tab_08;
+------+---------+--------+
| num  | num / 0 | num %0 |
+------+---------+--------+
|   64 |    NULL |   NULL |
+------+---------+--------+
1 row in set, 2 warnings (0.00 sec)

结果可以看到,对NUM进行运算的时候,加减法的运算时候,加减的优先级别相同,先加后减,先减后加结果相同。在进行除法运算的时候,64 无法被 3 整除,MySQL对结果保留到了小数点后四位,除以 3 的余数为 1 ,所以 num%3 的结果为 1 ,除法中 0 的除法没有意义,返回结果会为NULL。

3 比较运算符

比较运算符的结果总是 1,0 或者是NULL,比较运算符会经常在SELECT查询子句中使用,来满足查询的条件。
MySQL-运算符的使用解析

3.1 等于运算符(=)

等于运算符可以用于比较不同数据类型的值,例如字符型、数字型、日期型等,只要这两个值的数据类型相同,就可以进行比较。
需要注意的是,在比较字符型的值时,SQL 通常是区分大小写的。如果想要忽略大小写,可以使用 LOWER() 或 UPPER() 函数进行转换。

mysql> SELECT 1=0, '2'=2, 2=2,'0.02'=0, 'b'='b', (1+3) = (2+2),NULL=NULL;
+-----+-------+-----+----------+---------+---------------+-----------+
| 1=0 | '2'=2 | 2=2 | '0.02'=0 | 'b'='b' | (1+3) = (2+2) | NULL=NULL |
+-----+-------+-----+----------+---------+---------------+-----------+
|   0 |     1 |   1 |        0 |       1 |             1 |      NULL |
+-----+-------+-----+----------+---------+---------------+-----------+
1 row in set (0.00 sec)

如果两个数值的数据类型相同,则直接进行比较。

如果两个数值的数据类型不同,则会将其中一个数值转换为另一个数值的数据类型,然后再进行比较。通常,将数字转换为字符型时,SQL 会将数字转换为一个字符串,然后逐位比较字符串的每一个字符;将字符转换为数字时,SQL 会尽可能将字符转换为数字,然后进行比较。

如果其中一个数值为 NULL,则比较的结果为 UNKNOWN。这是因为在 SQL 中,NULL 表示未知或不存在的值,所以无法判断 NULL 和其他值之间的大小关系或相等关系。

3.2 安全等于运算符(<==>)

和等于运算符有相同的比较效果,但是安全等于运算符可用于判断NULL值。两个均为NULL返回为 1,不为NULL,一个为NULL,返回为 0,不为NULL。

mysql> SELECT 1<=>0, '2'<=>2, 2<=>2,'0.02'<=>0, 'b'<=>'b', (1+3) <=> (2+1),NULL<=>NULL;
+-------+---------+-------+------------+-----------+-----------------+-------------+
| 1<=>0 | '2'<=>2 | 2<=>2 | '0.02'<=>0 | 'b'<=>'b' | (1+3) <=> (2+1) | NULL<=>NULL |
+-------+---------+-------+------------+-----------+-----------------+-------------+
|     0 |       1 |     1 |          0 |         1 |               0 |           1 |
+-------+---------+-------+------------+-----------+-----------------+-------------+
1 row in set (0.00 sec)

3.3 不等于运算符(<> 或者 !=)

不等于运算符是 SQL 中常用的另一种比较运算符,表示两个值不相等。在 SQL 中,通常有两种不等于运算符:<> 和 !=。这两种不等于运算符的使用方法完全相同,可以判断数字,字符串,表达式等。 不相等返回为 1 ,相等返回为 0 。

mysql> SELECT 'good'<>'god', 1<>2, 4!=4, 5.5!=5, (1+3)!=(2+1),NULL<>NULL;
+---------------+------+------+--------+--------------+------------+
| 'good'<>'god' | 1<>2 | 4!=4 | 5.5!=5 | (1+3)!=(2+1) | NULL<>NULL |
+---------------+------+------+--------+--------------+------------+
|             1 |    1 |    0 |      1 |            1 |       NULL |
+---------------+------+------+--------+--------------+------------+
1 row in set (0.00 sec)

3.4 小于等于运算符(<=)

用于比较两个值大小的运算符之一,用于判断第一个值是否小于或等于第二个值。不能用于判断空值NULL。小于等于返回 1,否则返回 0

mysql> SELECT 'good'<='god', 1<=2, 4<=4, 5.5<=5, (1+3) <= (2+1),NULL<=NULL;
+---------------+------+------+--------+----------------+------------+
| 'good'<='god' | 1<=2 | 4<=4 | 5.5<=5 | (1+3) <= (2+1) | NULL<=NULL |
+---------------+------+------+--------+----------------+------------+
|             0 |    1 |    1 |      0 |              0 |       NULL |
+---------------+------+------+--------+----------------+------------+
1 row in set (0.01 sec)

3.5 小于运算符(<)

用于比较两个值大小的运算符之一,用于判断第一个值是否小于第二个值。不能用于判断空值NULL。小于返回 1,否则返回 0

mysql> SELECT 'good'<'god', 1<2, 4<4, 5.5<5, (1+3) < (2+1),NULL<NULL;
+--------------+-----+-----+-------+---------------+-----------+
| 'good'<'god' | 1<2 | 4<4 | 5.5<5 | (1+3) < (2+1) | NULL<NULL |
+--------------+-----+-----+-------+---------------+-----------+
|            0 |   1 |   0 |     0 |             0 |      NULL |
+--------------+-----+-----+-------+---------------+-----------+
1 row in set (0.00 sec)

3.6 大于等于运算符(>=)

SQL 中用于比较两个值大小的运算符之一,用于判断第一个值是否大于等于第二个值。不能用于判断空值NULL。大于等于返回 1,否则返回 0。

mysql> SELECT 'good'>='god', 1>=2, 4>=4, 5.5>=5, (1+3) >= (2+1),NULL>=NULL;
+---------------+------+------+--------+----------------+------------+
| 'good'>='god' | 1>=2 | 4>=4 | 5.5>=5 | (1+3) >= (2+1) | NULL>=NULL |
+---------------+------+------+--------+----------------+------------+
|             1 |    0 |    1 |      1 |              1 |       NULL |
+---------------+------+------+--------+----------------+------------+
1 row in set (0.00 sec)

3.7 大于运算符(>)

SQL 中用于比较两个值大小的运算符之一,用于判断第一个值是否大于第二个值。不能用于判断空值NULL。大于返回 1,否则返回 0。

mysql> SELECT 'good'>'god', 1>2, 4>4, 5.5>5, (1+3) > (2+1),NULL>NULL;
+--------------+-----+-----+-------+---------------+-----------+
| 'good'>'god' | 1>2 | 4>4 | 5.5>5 | (1+3) > (2+1) | NULL>NULL |
+--------------+-----+-----+-------+---------------+-----------+
|            1 |   0 |   0 |     1 |             1 |      NULL |
+--------------+-----+-----+-------+---------------+-----------+
1 row in set (0.00 sec)

3.8 IS NULL 和 IS NOT NULL

IS NULL 和 IS NOT NULL 是 SQL 中用于判断一个值是否为空(NULL)的运算符。
IS NULL 如果为NULL返回 1,否则返回 0。IS NOT NULL则与之相反。


mysql> SELECT NULL IS NULL, ISNULL(NULL),ISNULL(10), 10 IS NOT NULL;
+--------------+--------------+------------+----------------+
| NULL IS NULL | ISNULL(NULL) | ISNULL(10) | 10 IS NOT NULL |
+--------------+--------------+------------+----------------+
|            1 |            1 |          0 |              1 |
+--------------+--------------+------------+----------------+
1 row in set (0.00 sec)

3.9 BETWEEN AND 运算符

用于判断一个值是否在两个指定值之间的运算符。语法格式为:

value BETWEEN low AND high

其中,value 表示要判断的值,low 和 high 分别表示区间的下限和上限。
如果在区间内,包含low 和 high 值,返回为1,否则返回 0。

mysql> SELECT 4 BETWEEN 4 AND 6, 4 BETWEEN 4 AND 6,12 BETWEEN 9 AND 10;
+-------------------+-------------------+---------------------+
| 4 BETWEEN 4 AND 6 | 4 BETWEEN 4 AND 6 | 12 BETWEEN 9 AND 10 |
+-------------------+-------------------+---------------------+
|                 1 |                 1 |                   0 |
+-------------------+-------------------+---------------------+
1 row in set (0.00 sec)

mysql> SELECT  'x' BETWEEN 'f' AND 'g', 'b' BETWEEN 'a' AND 'c';
+-------------------------+-------------------------+
| 'x' BETWEEN 'f' AND 'g' | 'b' BETWEEN 'a' AND 'c' |
+-------------------------+-------------------------+
|                       0 |                       1 |
+-------------------------+-------------------------+
1 row in set (0.00 sec)

3.10 LEAST 运算符

用于在多个值中选择最小值的函数。

其语法格式为:

LEAST(value1, value2, ...)

其中,value1、value2、… 表示要比较的值,可以是任意数量的值。
需要注意的是,如果给 LEAST 函数传递的参数中有一个为空(NULL),那么结果也会为空。如果要避免这种情况,可以使用 COALESCE 函数将空值转换为一个默认值。例如:

– 选择两个数值中较小的一个,如果其中一个为空,则选择另一个

SELECT LEAST(5, COALESCE(NULL, 3));
mysql> SELECT least(2,0), least(20.0,3.0,100.5), least('a','c','b'),least(10,NULL);
+------------+-----------------------+--------------------+----------------+
| least(2,0) | least(20.0,3.0,100.5) | least('a','c','b') | least(10,NULL) |
+------------+-----------------------+--------------------+----------------+
|          0 |                   3.0 | a                  |           NULL |
+------------+-----------------------+--------------------+----------------+
1 row in set (0.00 sec)

3.11 GREATST 运算符

GREATEST 是 SQL 中用于在多个值中选择最大值的函数。

其语法格式为:

GREATEST(value1, value2, ...)

其中,value1value2、… 表示要比较的值,可以是任意数量的值。
需要注意的是,如果给 GREATEST 函数传递的参数中有一个为空(NULL),那么结果也会为空。如果要避免这种情况,可以使用 COALESCE 函数将空值转换为一个默认值。例如:

-- 选择两个数值中较大的一个,如果其中一个为空,则选择另一个
SELECT GREATEST(5, COALESCE(NULL, 3));
mysql> SELECT greatest(2,0), greatest(20.0,3.0,100.5), greatest('a','c','b'),greatest(10,NULL);
+---------------+--------------------------+-----------------------+-------------------+
| greatest(2,0) | greatest(20.0,3.0,100.5) | greatest('a','c','b') | greatest(10,NULL) |
+---------------+--------------------------+-----------------------+-------------------+
|             2 |                    100.5 | c                     |              NULL |
+---------------+--------------------------+-----------------------+-------------------+
1 row in set (0.00 sec)

3.12 IN,NOT IN 运算符

IN 运算符用来判断是否为IN 列表中的其中一个值,如果是返回为1,否则返回 0。NOT IN和IN则是相反的结果。
IN 的语法格式为:

value IN (value1, value2, ...)

其中,value 表示要进行测试的值,(value1, value2, …) 表示要进行比较的一组值。NOT IN 的语法格式与 IN 很相似,只需在 IN 前面加上 NOT 即可。

mysql> SELECT 2 IN (1,3,5,'thks'), 'thks' IN (1,3,5,'thks');
+---------------------+--------------------------+
| 2 IN (1,3,5,'thks') | 'thks' IN (1,3,5,'thks') |
+---------------------+--------------------------+
|                   0 |                        1 |
+---------------------+--------------------------+
1 row in set, 2 warnings (0.00 sec)

3.13 LIKE 运算符

用于在 SQL 查询中进行模式匹配。它与通配符符号一起使用,来匹配字符串中的部分内容。

LIKE 运算符的语法格式为:

value LIKE pattern

其中,value 表示要进行匹配的字符串,pattern 表示要匹配的模式。可以使用 % 和 _ 通配符来表示任意多个字符和任意单个字符。
需要注意的是,在使用 LIKE 运算符时,匹配字符串的时候区分大小写。如果要忽略大小写,可以使用 LOWER 或 UPPPER 函数将字符串转换为小写或大写再进行匹配。

mysql> SELECT 'stud' LIKE 'stud', 'stud' LIKE 'stu_','stud' LIKE '%d','stud' LIKE 't_ _ _', 's' LIKE NULL;
+--------------------+--------------------+------------------+----------------------+---------------+
| 'stud' LIKE 'stud' | 'stud' LIKE 'stu_' | 'stud' LIKE '%d' | 'stud' LIKE 't_ _ _' | 's' LIKE NULL |
+--------------------+--------------------+------------------+----------------------+---------------+
|                  1 |                  1 |                1 |                    0 |          NULL |
+--------------------+--------------------+------------------+----------------------+---------------+
1 row in set (0.00 sec)

3.14 REGEXP 运算符

REGEXP 运算符用于在 SQL 查询中进行正则表达式匹配。它与正则表达式的语法一起使用,来匹配字符串中的部分内容。

REGEXP 运算符的语法格式为:

value REGEXP pattern

其中,value 表示要进行匹配的字符串,pattern 表示要匹配的正则表达式。正则表达式中可以使用各种元字符和限定符来表达不同的匹配模式。
1)‘^’ 匹配以该字符后边字符开头的字符串。
2)‘$’ 匹配以该字符后边字符结尾的字符串。
3)‘.’ 匹配任意一个单字符
4)‘[…] ’ 匹配括号内的任何字符,如[abcd] 匹配a,b,c,d。也可使用范围,[a-z] 匹配任意字母,[0-9]匹配任意数字。
5)’* ’ 匹配零个或者多个在他前面的字符。比如 ‘a*’,是匹配任何数量的a字符,'* '则是匹配任何数据量的任何字符。

mysql> SELECT 'ssky' REGEXP '^s', 'ssky' REGEXP 'y$', 'ssky' REGEXP '.sky', 'ssky' REGEXP '[ab]';
+--------------------+--------------------+----------------------+----------------------+
| 'ssky' REGEXP '^s' | 'ssky' REGEXP 'y$' | 'ssky' REGEXP '.sky' | 'ssky' REGEXP '[ab]' |
+--------------------+--------------------+----------------------+----------------------+
|                  1 |                  1 |                    1 |                    0 |
+--------------------+--------------------+----------------------+----------------------+
1 row in set (0.00 sec)

4 逻辑运算符

所有逻辑运算符所求的结果均为TRUE,FALSE或者NULL,mysql中体现为1,0,和NULL
MySQL-运算符的使用解析

4.1 NOT 或者 !

逻辑非运算符NOT或者 ! ,表示当前操作数为 0 ,所得值为1,当操作数为非 0 值时候,所得值为0,当操作数为NULL是,所得的返回值为NULL。

mysql>  SELECT NOT 10, NOT (1-1), NOT -5, NOT NULL, NOT 1 + 1;
+--------+-----------+--------+----------+-----------+
| NOT 10 | NOT (1-1) | NOT -5 | NOT NULL | NOT 1 + 1 |
+--------+-----------+--------+----------+-----------+
|      0 |         1 |      0 |     NULL |         0 |
+--------+-----------+--------+----------+-----------+
1 row in set (0.00 sec)

mysql>  SELECT !10, !(1-1), !-5, ! NULL, ! 1 + 1;
+-----+--------+-----+--------+---------+
| !10 | !(1-1) | !-5 | ! NULL | ! 1 + 1 |
+-----+--------+-----+--------+---------+
|   0 |      1 |   0 |   NULL |       1 |
+-----+--------+-----+--------+---------+
1 row in set, 5 warnings (0.00 sec)

4.2 AND 和 &&

逻辑与运算符 AND 或者 &&表示当所有操作数均为非零值并且不为NULL时,计算所得结果为 1 ,当一个或者多个操作数为 0 时,所得结果为 0 ,其余情况为NULL。

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

mysql> 
mysql>  SELECT  1 && -1,1 && 0,1 && NULL, 0 && NULL;
+---------+--------+-----------+-----------+
| 1 && -1 | 1 && 0 | 1 && NULL | 0 && NULL |
+---------+--------+-----------+-----------+
|       1 |      0 |      NULL |         0 |
+---------+--------+-----------+-----------+
1 row in set, 4 warnings (0.00 sec)

4.3 OR 或者 ||

逻辑或运算符 OR 或者 || 表示当两个操作数均为非NULL值,且任意一个操作数为非零值时,结果为 1,否则结果为 0。 有一个操作数为NULL,另一个为非零值时,结果为 1.否则结果为NULL。当两个操作数均为NULL时,所得结果为NULL。

mysql> SELECT  0 OR 0 OR 0, 1 OR 2,1 OR NULL, 0 OR NULL, NULL OR NULL;
+-------------+--------+-----------+-----------+--------------+
| 0 OR 0 OR 0 | 1 OR 2 | 1 OR NULL | 0 OR NULL | NULL OR NULL |
+-------------+--------+-----------+-----------+--------------+
|           0 |      1 |         1 |      NULL |         NULL |
+-------------+--------+-----------+-----------+--------------+
1 row in set (0.00 sec)

mysql>  SELECT  1 || -1 || 0, 1 || 2,1 || NULL, 0 || NULL, NULL || NULL;
+--------------+--------+-----------+-----------+--------------+
| 1 || -1 || 0 | 1 || 2 | 1 || NULL | 0 || NULL | NULL || NULL |
+--------------+--------+-----------+-----------+--------------+
|            1 |      1 |         1 |      NULL |         NULL |
+--------------+--------+-----------+-----------+--------------+
1 row in set, 6 warnings (0.00 sec)

4.4 XOR 运算符

逻辑异或运算符XOR,表示当任意一个操作数为NULL,返回值NULL,对于得NULL的操作数,如果两个都是非 0 值或者都是 0 值。则返回结果为 0 ,如过一个为 0,另一个为非 0 值,则返回结果为 1。

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

最后一个 1 XOR 1 为 0 ,之后再和 1 进行运算,结果为1.

5 位运算符

位运算符是在二进制数上进行计算的运算符,位运算符会先将操作数变为二进制数,然后进行位运算,最后将结果从二进制变回十进制。
MySQL-运算符的使用解析

5.1 位或运算符(|)

位或运算的实质是将参与运算的几个数据按照对应的二进制数诸位进行逻辑位或运算,对应的二进制为有一个或者两个为1则该为的运算结果为1,否则为0。

mysql> SELECT 10 | 15, 9 | 4 | 2;
+---------+-----------+
| 10 | 15 | 9 | 4 | 2 |
+---------+-----------+
|      15 |        15 |
+---------+-----------+
1 row in set (0.00 sec)

10 的二进制数值为 1010,15 的二进制数值为 1111,按位或运算之后,结果为 1111,即整数15
9的二进制数值为 1001,4 的二进制数值为 0100,2的二进制数值为 0010,按位或运算之后,结果为 1111,即整数 15。其结果为一个64 位无符号整数。

5.2 位与运算符(&)

位与运算的实质是将参与运算的几个操作数按照对应的二进制数逐位进行逻辑与运算。对应的二进制位都为1则该位的运算结果为 1,否则为 0。

mysql>  SELECT 10 & 15, 9 &4& 2;
+---------+---------+
| 10 & 15 | 9 &4& 2 |
+---------+---------+
|      10 |       0 |
+---------+---------+
1 row in set (0.00 sec)

10的二进制数值为 1010,15 的二进制数值为 1111,按位与运算之后,结果为 1010,即整数10
9的二进制数值为 1001,4 的二进制数值为 0100,2的二进制数值为 0010,按位与运算之后,结果为 0000,即整数0。其结果为一个64位无符号整数。

5.3 位异或运算符(^)

位异或运算的实质是将参与运算的两个数据按照对应的二进制数逐位进行逻辑异或运算。对应位的二进制数不同时,对应位的结果才为 1。如果两个对应位数都为0或者都为 1,则对应位的结果为 0。

mysql> SELECT 10 ^ 15, 1 ^0, 1 ^ 1;
+---------+------+-------+
| 10 ^ 15 | 1 ^0 | 1 ^ 1 |
+---------+------+-------+
|       5 |    1 |     0 |
+---------+------+-------+
1 row in set (0.01 sec)

10 的二进制数值为 1010,15 的二进制数值为 1111,按位异或运算之后,结果为 0101,即整数5
1的二进制数值为 0001,0的二进制数值为 0000,按位异或运算之后,结果为 0001
1和1本身二进制位完全相同,因此结果为 0。

5.4 位左移运算符(<<)

位左移运算符<<使指定的二进制值的所有位都左移指定的位数。左移指定位数之后,左边高位的数值将被移出并丢弃,右边低位空出的位置用 0补齐。
语法格式为:

expr<<n

其中,n 指定值expr要移位的位数。

mysql>  SELECT 1<<2, 4<<2;
+------+------+
| 1<<2 | 4<<2 |
+------+------+
|    4 |   16 |
+------+------+
1 row in set (0.00 sec)

1的二进制值为 0000 0001,左移两位之后变成 0000 0100,即十进制整数 4
十进制4左移两位之后变成 0001 0000,即变成十进制的 16。

5.5 位右移运算符(>>)

位右移运算符>>使指定的二进制值的所有位都右移指定的位数。右移指定位数之后,右边低位的数值将被移出并丢弃,左边高位空出的位置用 0 补齐。
语法格式为:

expr>>n

其中,n 指定值expr 要移位的位数。

mysql> SELECT 1>>1, 16>>2;
+------+-------+
| 1>>1 | 16>>2 |
+------+-------+
|    0 |     4 |
+------+-------+
1 row in set (0.00 sec)

1的二进制值为 0000 0001,右移 1位之后变成000 0000,即十进制整数 0
16 的二进制值为0001 0000 右移两位之后变成 0000 0100,即变成十进制的 4。

5.6 位取反运算符 (~)

位取反运算的实质是将参与运算的数据按照对应的二进制数逐位反转,即 1 取反后变为 0、0取反后变为 1。

mysql>  SELECT 5 & ~1;
+--------+
| 5 & ~1 |
+--------+
|      4 |
+--------+
1 row in set (0.00 sec)

在逻辑运算 5& ~1 中,由于位取反运算符 ~ 的级别高于位与运算符 & ,因此先对 1进行取反操作,取反之后,除了最低位为 0外其他位都为 1,即1110,然后与十进制数值 5 进行与运算,结果为 0100,即整数 4。

6 运算符的优先级

运算符的优先级别决定了不同的运算符在表达式中的计算的先后顺序。
MySQL-运算符的使用解析
可以看到,不同运算符的优先级是不同的。一般情况下,级别高的运算符先进行计算,如果级别相同,MySOL 按表达式的顺序从左到右依次计算。当然,在无法确定优先级的情况下,可以使用圆括号()来改变优先级,并且这样会使计算过程更加清晰。文章来源地址https://www.toymoban.com/news/detail-424707.html

到了这里,关于MySQL-运算符的使用解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++ operator关键字的使用(重载运算符、仿函数、类型转换操作符)

    C++ operator的使用(重载运算符、仿函数、类型转换操作符) C++11实用技术(一)auto与decltype的使用 C++11实用技术(二)std::function和bind绑定器 C++11实用技术(三)std::future、std::promise、std::packaged_task、async C++11 中,operator 是一个,用于重载运算符。通过重载运算符

    2024年02月14日
    浏览(47)
  • 【C++】实现Date类的各种运算符重载

    上一篇文章只实现了operator==操作符重载,由于运算符较多,该篇文章单独实现剩余所有的运算符重载。继续以Date类为例,实现运算符重载: 1.Date.h Date.cpp 3.Test.cpp

    2024年02月20日
    浏览(39)
  • 【Java探索之旅】运算符解析 算术运算符,关系运算符

    🎥 屿小夏 : 个人主页 🔥个人专栏 : Java编程秘籍 🌄 莫道桑榆晚,为霞尚满天! Java中运算符是非常重要的概念,它们用于对变量进行操作和比较,是实现各种算法和逻辑的基础。本文将介绍Java中的算术运算符和关系运算符,解释它们的基本用法和注意事项,帮助读者更

    2024年03月15日
    浏览(54)
  • JAVA——数据类型与运算符

    注意事项: 1.初始化操作是可选的, 但是建议创建变量的时候都显式初始化.                   2. 最后不要忘记分号, 否则会编译失败.                   3.初始化设定的值为 10L , 表示一个长整型的数字. 10l 也可以.                   4.float 类型在 Java 中占四个字节, 遵守

    2024年01月19日
    浏览(69)
  • 【JavaSE】数据类型和运算符

    从这一篇我们开始Java的学习~ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 前言 Java第一个程序 字面常量 字面常量的分类 结合代码理解 类型转换 类型提升  byte与byte的运算 正确写法 字符串类型String int与String相互转换 int转String String转int 算

    2024年03月28日
    浏览(47)
  • Java数据类型,变量与运算符

    常量是在程序运行期间,固定不变的量称为常量。 在以上程序中,输出的Hello Word,其中的“Hello Word”就是字面常量。 字面常量的分类: 字符串常量 整形常量 浮点数常量 字符常量 布尔常量 空常量 注意:字符串,整形,浮点型,字符型以及布尔型,在Java中都称为数据类型

    2024年02月08日
    浏览(56)
  • JavaSE-02【类型转换和运算符】

    自动转换:将取值范围小的类型自动提升为取回范围大的类型 案例:Demo01_DataType 强制类型转换:将取值范围大的类型,强制转换成取值范围小的类型 转换格式: 案例: 注意事项 1、算术运算符----四则与取模运算 2、算术运算符----加号的多种用法 3、案例 3、算术运算符---

    2024年02月08日
    浏览(52)
  • JavaSE ---01 数据类型与运算符

    正所谓温故而知新,可以为师矣,虽然已经学过一遍javase,但是回头复习仍然能找到很多初学的时候遗忘的点,所以我们在学习的途中还是要保持空杯心态,这样才能走的更远, 切忌眼高手低 . 说到变量大家都经常去使用,那么什么是变量呢?下面给出变量的定义 变量指的是程序运行时

    2024年02月08日
    浏览(43)
  • C++——类和对象3|日期类型|Cout运算符重载|Cin运算符重载|const成员|

    目录 日期类型  Date.h  Date.cpp  Test.cpp  实现Cout运算符重载  实现Cin运算符重载  根据日期算星期  修改后完整代码   Date.h  Date.cpp  const成员  取地址及const取地址操作符重载 习题  计算日期到天数转换     一个类到底可以重载哪些运算符,要看哪些运算符对这个类型有

    2023年04月13日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包