mysql中的四大运算符种类汇总20多项,用了三天三夜来整理的,还不赶快收藏

2023-05-16

运算符连接表达式中的各个操作数,他的作用是用来指明对数据表中的操作数所进行的运算。

运用运算法有什么好处呢?

运用运算符可以更加灵活的使用表中的数据,我们可以通过使用运算符来解决我们的很多问题,大大提高效率。

什么是运算符:

运算符是告诉mysql执行特定算术或者逻辑操作的符号。

mysql的内部运算符很丰富,主要有四大类,分别是:

  • 算术运算符:用于各类数值运算

  • 加(+)

  • 减(-)

  • 乘(*)

  • 除(/)

  • 求余(或者称模运算)(%)

  • 比较运算符:用于比较运算

  • 大于(>)

  • 小于(<)

  • 等于(=)

  • 大于等于(>=)

  • 小于等于(<=)

  • 不等于(!=)

  • IN、BETWEEN AND、IS NULL、GREATEST、LEAST、LIKE、REGEXP

  • 逻辑运算符:求值所得结果均为1(TRUE)、0(FALSE),这类运算符有:

  • 逻辑非(NOT或者!)

  • 逻辑与(AND或者&&)

  • 逻辑或(OR或者||)

  • 逻辑异或(XOR)

  • 位运算符:参与运算的操作数按二进制位进行运算

  • 位与(&)

  • 位或(|)

  • 位非(~)

  • 位异或(^)

  • 左移(<<)

  • 右移(>>)

可以看到上面有多达20多种运算符,我们接下来就根据这个来一一进行整理。

算术运算符

算术运算符是sql中最基本的运算符;

图片

老规矩,一切都在操作中;

举个例子:

创建表一个名为yunweijia_1的数据表;

mysql> create table yunweijia_1 (num int);
Query OK, 0 rows affected (0.04 sec)

mysql> show tables;
+-------------------+
| Tables_in_test_db |
+-------------------+
| yunweijia_1       |
+-------------------+
1 row in set (0.00 sec)

mysql>

yunweijia_1的数据表中插入数据;

mysql> insert into yunweijia_1 values (66);
Query OK, 1 row affected (0.01 sec)

mysql>

加法和减法运算

mysql> select num, num+10, num-10, num+10-5, num-5+10 from yunweijia_1;
+------+--------+--------+----------+----------+
| num  | num+10 | num-10 | num+10-5 | num-5+10 |
+------+--------+--------+----------+----------+
|   66 |     76 |     56 |       71 |       71 |
+------+--------+--------+----------+----------+
1 row in set (0.00 sec)

mysql>

从上面可以看到,我们可以对num字段的值进行加法和减法的运算,而且+- 的优先级相同,先加后减或者先减后加的结果是相同的哈。

乘法、除法和求余运算

mysql> select num, num*2, num/2, num%22, num%30 from yunweijia_1;
+------+-------+---------+--------+--------+
| num  | num*2 | num/2   | num%22 | num%30 |
+------+-------+---------+--------+--------+
|   66 |   132 | 33.0000 |      0 |      6 |
+------+-------+---------+--------+--------+
1 row in set (0.00 sec)

mysql>

从上面可以看到,对num进行除除法运算的时间,66被2整除之后,小数位也是保留了4位小数的。求余运算的时候,由于66被22整除了,所以余数是0,但是66无法被30整除,所以余数就是6了。

注意点:

在数学运算时,除数为0的除法是没有意义的,因此除法运算中的除数不能为0,如果被0除的话,结果会返回NULL

如下:

mysql> select num, num/0, num%0 from yunweijia_1;
+------+-------+-------+
| num  | num/0 | num%0 |
+------+-------+-------+
|   66 |  NULL |  NULL |
+------+-------+-------+
1 row in set (0.00 sec)

mysql>

比较运算符

一个比较运算符的结果总是1、0或者null。比较运算符经常在select的查询条件子句中使用,用来查询满足指定条件的记录。

图片

等于运算符(=)

如果相等,返回值为1,否则返回值为0;

mysql> select 1=0, '2'=2, 2=2, '0.01'=0, 'a'='a', (1+5)=(8-2), NULL=NULL;
+-----+-------+-----+----------+---------+-------------+-----------+
| 1=0 | '2'=2 | 2=2 | '0.01'=0 | 'a'='a' | (1+5)=(8-2) | NULL=NULL |
+-----+-------+-----+----------+---------+-------------+-----------+
|   0 |     1 |   1 |        0 |       1 |           1 |      NULL |
+-----+-------+-----+----------+---------+-------------+-----------+
1 row in set (0.00 sec)

mysql>

从结果可以看到哈,在进行判断时,2=2和’2’=2的返回值是相同的,都是1,这是为啥呢,是因为在进行判断时,mysql自动进行了转换,把字符2转换成了数字2;‘a’='a’是相同的字符比较,因此返回值为1;表达式的话就因为等号(=)两边计算结果一致,所以返回值是1,由于(=)不能用于空值NULL的判断,因此返回值为NULL

所以数值比较时有以下规则:

  1. 若有一个或者两个参数为NULL,则比较运算的结果为NULL

  2. 若容一个比较运算中的两个参数都是字符串,则按照字符串进行比较;

  3. 若两个参数均为整数的话,则按照整数进行比较;

  4. 若用字符串和数字进行相等判断,则mysql自动可以将字符串转换为数字。

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

mysql中的安全等于运算符和等于运算符类似,不过呢,安全等于运算符可以用来判断NULL值。在两个操作数均为NULL时,其返回值为1,而不是直接返回NULL;反之,当一个操作数为NULL,其返回值为0,而也不是NULL

mysql> select 1<=>0, '2'<=>2, 2<=>2, '0.01'<=>0, 'a'<=>'a', (1+5)<=>(8-2), NULL<=>NULL, 3<=>NULL;
+-------+---------+-------+------------+-----------+---------------+-------------+----------+
| 1<=>0 | '2'<=>2 | 2<=>2 | '0.01'<=>0 | 'a'<=>'a' | (1+5)<=>(8-2) | NULL<=>NULL | 3<=>NULL |
+-------+---------+-------+------------+-----------+---------------+-------------+----------+
|     0 |       1 |     1 |          0 |         1 |             1 |           1 |        0 |
+-------+---------+-------+------------+-----------+---------------+-------------+----------+
1 row in set (0.00 sec)

mysql>

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

'<>‘或者’!='用于判断数字、字符串、表达式不相等的判断;如果不相等,返回值为1;否则返回值为0;

注意:

这两个运算符不能用于判断空值NULL

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

mysql>

小于等于运算符(<=)

用来判断左边的操作数是否小于等于右边的操作数。

如果小于等于,返回值为1,否则返回值为0。同样的,<=不能用于判断空值NULL

mysql> select 'good'<='good', 'good'<='goood', 'good'<='god', 1<=2, 3<=2, (4+1)<=(9-8), NULL<=NULL;
+----------------+-----------------+---------------+------+------+--------------+------------+
| 'good'<='good' | 'good'<='goood' | 'good'<='god' | 1<=2 | 3<=2 | (4+1)<=(9-8) | NULL<=NULL |
+----------------+-----------------+---------------+------+------+--------------+------------+
|              1 |               1 |             0 |    1 |    0 |            0 |       NULL |
+----------------+-----------------+---------------+------+------+--------------+------------+
1 row in set (0.00 sec)

mysql>

小于运算符(<)

用来判断左边的操作数是否小于右边的操作数;

如果小于,返回值为1,否则返回值为0。<不能用于判断空值NULL

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

mysql>

大于等于运算符(>=)

用来判断左边的操作数是否大于等于右边的操作数。

如果大于等于,返回值为1;否则返回值为0。不能用于判断空值NULL

mysql> select 'good'>='good', 'good'>='goodd', 'good'>='god', 1>=2, 2>=1, (5+5)>=(6-2), NULL>=NULL;
+----------------+-----------------+---------------+------+------+--------------+------------+
| 'good'>='good' | 'good'>='goodd' | 'good'>='god' | 1>=2 | 2>=1 | (5+5)>=(6-2) | NULL>=NULL |
+----------------+-----------------+---------------+------+------+--------------+------------+
|              1 |               0 |             1 |    0 |    1 |            1 |       NULL |
+----------------+-----------------+---------------+------+------+--------------+------------+
1 row in set (0.00 sec)

mysql>

大于运算符(>)

用来判断左边的操作数是否大于右边的操作数。

如果大于,返回值为1;否则返回值为0。不能用于判断空值NULL

mysql> select 'good'>'good', 'good'>'goood', 'good'>'god', 2>1, 3>5, (9+9)>(1+2), NULL>NULL;
+---------------+----------------+--------------+-----+-----+-------------+-----------+
| 'good'>'good' | 'good'>'goood' | 'good'>'god' | 2>1 | 3>5 | (9+9)>(1+2) | NULL>NULL |
+---------------+----------------+--------------+-----+-----+-------------+-----------+
|             0 |              0 |            1 |   1 |   0 |           1 |      NULL |
+---------------+----------------+--------------+-----+-----+-------------+-----------+
1 row in set (0.00 sec)

mysql>

IS NULL(ISNULL)和(IS NOT NULL)运算符

is nullisnull用来检验一个值是否为NULL

如果是NULL,返回值为1,否则返回值为0。

is not null用来检验一个值是否为非NULL

如果是非NULL,返回值为1,否则返回值为0。

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

mysql>

BETWEEN AND运算符

语法格式:

expr between min and max

如果expr大于等于min且小于等于max,则between的返回值为1,否则返回值为0。

mysql> select 4 between 1 and 5, 4 between 4 and 5, 9 between 1 and 8, 7 between 10 and 12;
+-------------------+-------------------+-------------------+---------------------+
| 4 between 1 and 5 | 4 between 4 and 5 | 9 between 1 and 8 | 7 between 10 and 12 |
+-------------------+-------------------+-------------------+---------------------+
|                 1 |                 1 |                 0 |                   0 |
+-------------------+-------------------+-------------------+---------------------+
1 row in set (0.00 sec)

mysql>

LEAST运算符

语法格式:

least (值1,值2,...,值n)

在有两个或者多个参数的情况下,返回最小值。如果任意一个自变量为NULL,则LEAST()返回的值为NULL

mysql> select least(0,1,2,3), least(1.0,5,99), least('a', 'b', 'c'), least(0,null,9);
+----------------+-----------------+----------------------+-----------------+
| least(0,1,2,3) | least(1.0,5,99) | least('a', 'b', 'c') | least(0,null,9) |
+----------------+-----------------+----------------------+-----------------+
|              0 |             1.0 | a                    |            NULL |
+----------------+-----------------+----------------------+-----------------+
1 row in set (0.00 sec)

mysql>

GREATEST(VALUE1, VALUE2,…)

当有两个或者多个参数时,返回最大值。如果任意一个自变量为NULL,则grestest()返回的值为NULL

mysql> select greatest(0,1,2,3), greatest(1.0,5,99), greatest('a', 'b', 'c'), greatest(0,null,9);
+-------------------+--------------------+-------------------------+--------------------+
| greatest(0,1,2,3) | greatest(1.0,5,99) | greatest('a', 'b', 'c') | greatest(0,null,9) |
+-------------------+--------------------+-------------------------+--------------------+
|                 3 |               99.0 | c                       |               NULL |
+-------------------+--------------------+-------------------------+--------------------+
1 row in set (0.00 sec)

mysql>

IN、NOT IN 运算符

in运算符用来判断操作数是否为in列表中的其中一个值;

如果是,返回值为1,否则的话返回值为0。

mysql> select 9 in (1,4,9,10,'yunweijia'), 'yunweijia' in (1,4,9,10,'yunweijia'), 1 in (2,4,5);
+-----------------------------+---------------------------------------+--------------+
| 9 in (1,4,9,10,'yunweijia') | 'yunweijia' in (1,4,9,10,'yunweijia') | 1 in (2,4,5) |
+-----------------------------+---------------------------------------+--------------+
|                           1 |                                     1 |            0 |
+-----------------------------+---------------------------------------+--------------+
1 row in set, 1 warning (0.00 sec)

mysql>

not in运算符用来判断表达式是否为in列表中的其中一个值;

如果不是,返回值为1,否则的话返回值为0。

mysql> select 9 not in (1,4,9,10,'yunweijia'), 'yunweijia' not in (1,4,9,10,'yunweijia'), 1 not in (2,4,5);
+---------------------------------+-------------------------------------------+------------------+
| 9 not in (1,4,9,10,'yunweijia') | 'yunweijia' not in (1,4,9,10,'yunweijia') | 1 not in (2,4,5) |
+---------------------------------+-------------------------------------------+------------------+
|                               0 |                                         0 |                1 |
+---------------------------------+-------------------------------------------+------------------+
1 row in set, 1 warning (0.00 sec)

mysql>

in里面存在null值,如果运算符不成立的话,直接返回null

mysql> select 9 in (1,4,9,10, null), 'yunweijia' in (1,4,9,10,'yunweijia', null), 1 in (2,4,5, null);
+-----------------------+---------------------------------------------+--------------------+
| 9 in (1,4,9,10, null) | 'yunweijia' in (1,4,9,10,'yunweijia', null) | 1 in (2,4,5, null) |
+-----------------------+---------------------------------------------+--------------------+
|                     1 |                                           1 |               NULL |
+-----------------------+---------------------------------------------+--------------------+
1 row in set, 1 warning (0.00 sec)

mysql>

like运算法

用来匹配字符串;语法格式:

expr like 匹配条件

如果expr满足匹配条件,则返回值为1,否则返回值为0。

expr或匹配条件中任何一个为null,则结果为null

like运算符在进行匹配的时候,可以使用通配符,如下:

  1. %匹配任何数目的字符,甚至包括零字符;

  2. _只能匹配一个字符;

mysql> select 'yunweijia' like 'yunweijia', 'ywj' like 'yw_', 'ywj' like 'y%', 'ywj' like 'yunweijia';
+------------------------------+------------------+-----------------+------------------------+
| 'yunweijia' like 'yunweijia' | 'ywj' like 'yw_' | 'ywj' like 'y%' | 'ywj' like 'yunweijia' |
+------------------------------+------------------+-----------------+------------------------+
|                            1 |                1 |               1 |                      0 |
+------------------------------+------------------+-----------------+------------------------+
1 row in set (0.00 sec)

mysql>

REGEXP运算符

mysql中的正则表达式,用来匹配字符串,语法格式为:

expr regexp 匹配条件

如果expr满足匹配条件,返回1,否则返回0,如果expr或匹配条件任意一个为NULL,则结果为NULL

regexp运算符在进行匹配时,常用的有以下几种通配符:

  • ^匹配以该字符后面的字符开头的字符串

  • $匹配以该字符前面的字符结尾的字符串

  • .匹配任意一个单字符

  • [...]匹配在方括号内的任何字符,例如:[abc]匹配’a’,‘b’,‘c’。常用的还有[a-z]匹配任何字母,而[0-9]匹配任何数字

  • *匹配另个或者多个在他前面的字符,例如:'x*'匹配任何数量的’x’字符,[0-9]*匹配任何数字,*匹配任何数量的任何字符。

mysql> select 'yunweijia' regexp '^y', 'ywj' regexp 'j$', 'ywj' regexp 'y*j', 'ywj' regexp "['ywj', 'aa', 'bb']";
+-------------------------+-------------------+--------------------+------------------------------------+
| 'yunweijia' regexp '^y' | 'ywj' regexp 'j$' | 'ywj' regexp 'y*j' | 'ywj' regexp "['ywj', 'aa', 'bb']" |
+-------------------------+-------------------+--------------------+------------------------------------+
|                       1 |                 1 |                  1 |                                  1 |
+-------------------------+-------------------+--------------------+------------------------------------+
1 row in set (0.00 sec)

mysql>

逻辑运算符

mysql中所有逻辑运算符的求值所得结果均为TRUEFALSENULL

mysql中,他们提现为1(TRUE)、0(FALSE)和NULL

图片

NOT或!

逻辑非运算符not或者!,表示当操作数为0时,所得值为1;

当操作数为非零值时,所得值为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>

小提示:

在使用运算符计算时,一定要注意不同运算符的优先级不同。如果不能确定计算顺序,最好使用括号,以保证运算结果的正确。

ADD或者&&

逻辑与运算符add或者&&表示当所有操作数均为非零值,并且不为null时,计算所得结果为1,;

当一个或多个操作数为0时,所得结果为0;

其余情况返回值为null

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

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

mysql>

or或者||

逻辑或运算符or或者||表示当两个操作数均为非null值且任意一个操作数为非零值时,结果为1,否则结果为0;

当有一个操作数为null,且另一个操作数为非零值时,则结果为1,否则结果为null

当两个操作数均为null时,则所得结果为null

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

mysql> select 9 || -9 || 0, 1 || 2, 0 || 0, 1 || null, 0 || null, null || null;
+--------------+--------+--------+-----------+-----------+--------------+
| 9 || -9 || 0 | 1 || 2 | 0 || 0 | 1 || null | 0 || null | null || null |
+--------------+--------+--------+-----------+-----------+--------------+
|            1 |      1 |      0 |         1 |      NULL |         NULL |
+--------------+--------+--------+-----------+-----------+--------------+
1 row in set, 7 warnings (0.00 sec)

mysql>

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, null xor null, 1 xor 1 xor 1;
+---------+---------+---------+------------+---------------+---------------+
| 1 xor 1 | 0 xor 0 | 1 xor 0 | 1 xor null | null xor null | 1 xor 1 xor 1 |
+---------+---------+---------+------------+---------------+---------------+
|       0 |       0 |       1 |       NULL |          NULL |             1 |
+---------+---------+---------+------------+---------------+---------------+
1 row in set (0.00 sec)

mysql>

位运算符

位运算符是在二进制数上进行计算的运算符。位运算符会先将操作数变成二进制数,然后进行位运算,最后将计算结果从二进制变回十进制数。

图片

位或运算符(||)

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

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

mysql>

10的二进制数值为1010,15的二进制数值为1111,按位或运算之后,结果为1111,即整数15;

9的二进制数值为1001,4的二进制数值为0100,2的二进制数值为0010,按位或运算之后,结果为1111,即整数15。

位与运算符(&)

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

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

mysql>

10的二进制数值为1010,15的二进制数值为1111,按位与运算之后,结果为1010,即整数10;

9的二进制数值为1001,4的二进制数值为0100,2的二进制数值为0010,按位与运算之后,结果为0000,即整数0。

位异或运算符(^)

位异或运算的实质是将参与运算的两个数据按照对应的二进制数逐位进行逻辑异或运算。

对应位的二进制数不同时,对应位的结果才为1。如果两个对应位数都为0或者都为1,则对应位的结果为0。

mysql> select 10 ^ 5, 1 ^ 2, 3 ^ 6;
+--------+-------+-------+
| 10 ^ 5 | 1 ^ 2 | 3 ^ 6 |
+--------+-------+-------+
|     15 |     3 |     5 |
+--------+-------+-------+
1 row in set (0.00 sec)

mysql>

10的二进制数值为1010,5的二进制数值为101,按位异或运算之后,结果为1111,即整数15;

1的二进制数值为1,2的二进制数值为10,按位异或运算之后,结果为11,即整数为3;

3的二进制数值为11,6的二进制数值为110,按位异或运算之后,结果为101,即整数5。

位左移运算符(<<)

位左移运算符<<使指定的二进制值的所有位都左移指定的位数。

左移指定位数之后,左边高位的数值继续左移,并不会进行丢弃,右边低位空出的位置用0补齐。

语法格式:

expr << n

n指定值expr要移位的位数。

mysql> select 1 << 2, 15 << 6;
+--------+---------+
| 1 << 2 | 15 << 6 |
+--------+---------+
|      4 |     960 |
+--------+---------+
1 row in set (0.00 sec)

mysql>

1的二进制值为1,左移两位之后变成了100,即十进制证书4

15的二进制位1111,左移6位之后变成了1111000000,即十进制整数960。

位右移运算符(>>)

位右移运算符>>使指定的二进制值的所有位都右移指定的位数。

右移指定位数之后,右边低位的数值将被移出并丢弃,左边高位空出的位置用0补齐。

语法格式为:

expr >> n

n指定值expr要移位的位数。

mysql> select 200 >> 2, 10 >> 6;
+----------+---------+
| 200 >> 2 | 10 >> 6 |
+----------+---------+
|       50 |       0 |
+----------+---------+
1 row in set (0.00 sec)

mysql>

100的二进制为11001000,右移两位之后是110010,即十进制50;

10的二进制为1010,右移6位之后是0,即二进制也是0。

位取反运算符(~)

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

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

mysql>

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

运算符的优先级

运算符的优先级决定了不同的运算符在表达式中计算的先后顺序。我们上面整理了这么多运算符,到底哪些运算符的优先级最高呢,下面我们就将优先级由低到高排列。

图片

每个运算符的优先级都是不同的,一般情况下,级别高的运算符先进行计算,如果级别相同,mysql按表达式的顺序从左到右依次计算。如果无法确定优先级,我们可以使用圆括号()来改变优先级。而且这样子会使我们的sql更加优雅,且计算过程更加清晰。

更多内容请转至VX公众号 “运维家” ,获取最新文章。

------ “运维家” ------

------ “运维家” ------

------ “运维家” ------

linux中断异常,linuxuml建模,linux编译多个源文件,linux怎么更新时间,linux中的分页视频教程,
linux怎么解压gzip,linux解压某个目录,怎么关闭linux网关,linux文件架构图,linux提高权限执行,
linux文件用什么标志,网络安全linux加固,linux中查看邮件,linux修改背景颜色,linux环境下搭建网站。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql中的四大运算符种类汇总20多项,用了三天三夜来整理的,还不赶快收藏 的相关文章

随机推荐

  • VS2015断点调试方法

    备注 xff1a 部分图片 xff08 打马赛克的 xff09 转自百度 xff0c 侵删 xff01 果真被和谐了 xff0c 大家还是看这个网页吧 xff1a https jingyan baidu com album e75057f2
  • FreeRTOS 源代码的编程标准与命名约定

    一 编程标准 xff08 Coding Standard xff09 FreeRTOS 源代码遵守 MISRA Motor Industry Software Reliability Association 规范 与 MISRA 标准有出入
  • 特征匹配中OpenCV Dmatch类的用法解析以及非常详细的ORB特征提取与匹配解析

    首先说明一点 xff0c 在SLAM中进行特征提取和匹配时 xff0c 需要注意使用的OpenCV版本 xff0c 在使用OpenCV2 x版本时 xff0c 可以创建特征对象如下所示 xff08 省略了参数表 xff09 xff1a OR
  • 单目视觉里程计的尺度问题的疑问?

    SLAM是个坑 经过一段时间对SLAM的了解 xff0c 原来是我理解有错误 xff0c 得到的尺度已经是统一的 xff0c 只是不知道它的真实尺度是多少 贴一个不错的视觉里程计简介的链接 xff1a https blog csdn net
  • 使用ORB_SLAM2的方式进行特征检测和提取

    比较opencv默认的方式和ORB SLAM2中对opencv进行重写的方式 xff0c 两个方法对图像特征提取结果的对比 为方便比较 xff0c 写在同一个文件中 主函数如下 xff1a include lt iostream gt in
  • 什么是归一化的平面坐标

    所谓的归一化的成像平面 xff0c 就是将三维空间点的坐标都除以Z 所有空间点坐标都转到了相机前单位距离处 xff0c 这个平面就叫归一化的平面 xff0c 之后再乘以焦距 f f f xff0c 让归一化平面回到成像平面 以一张别的博主做
  • 无人机编程实战第1讲——无人机简介

    目录 前言 一 飞控是什么 xff1f 二 扫盲行动 xff01 xff01 xff01 1 微控制器 2 传感器 3 处理 xff1f 4 无人机飞行姿态 总结 前言 随着开源无人机飞行控制器的不断发展 xff0c 越来越多优秀的代码与算
  • 阿里云Serverless kubernetes服务购买体验

    阿里云Serverless kubernetes服务购买体验 Serverless kubernetes是什么优点缺点体验步骤价格ECI的价格 xff1a ECS的价格 阿里云Serverless Kubernetes支持列表总结 Serv
  • python修改xml文件内容,不废话,拿来即用

    XML 被设计用来传输和存储数据 HTML 被设计用来显示数据 XML 指可扩展标记语言 xff08 eXtensible Markup Language xff09 可扩展标记语言 xff08 英语 xff1a Extensible Ma
  • mysql如何删除数据表,被关联的数据表如何删除呢

    删除数据表的时候 xff0c 表的定义和表中所有的数据均会被删除 因此 xff0c 在进行删除操作前 xff0c 最好对表中的数据做一个备份 xff0c 以免造成无法挽回的后果 mysql删除数据表分为两种情况 xff1b mysql删除没
  • mysql8.0新特性-自增变量的持久化

    在mysql8 0之前 xff0c 自增主键AUTO INCREMENT的值如果大于max primay key 43 1 xff0c 在mysql重启后 xff0c 会重置AUTO INCREMENT 61 max primay key
  • 双系统重装Ubuntu20.04及系统基本配置

    文章目录 前言Ubuntu20 04换源安装chrome浏览器安装OneNote安装Wechat QQ Dingtalk参考 前言 笔者从2019年9月份去长沙智能驾驶研究院开始接触ubuntu18 04 在2020年4月份做本科毕业设计的
  • 视觉 SLAM 十四讲 —— 第十三讲 建图

    视觉 SLAM 十四讲 第十三讲 建图 在前端和后端中 xff0c 我们重点关注同时估计相机运动轨迹与特征点空间位置的问题 然而 xff0c 在实际使用 SLAM 时 xff0c 除了对相机本体进行定位之外 xff0c 还存在许多其他的需求
  • mysql中数据表的基本操作很难嘛,由这个实验来带你从头走一遍

    mysql表中数据表的各种操作 xff0c 创建表 添加各类约束 查看表结构 修改和删除表 这次带你捋清楚 xff0c 从头再走一遍 实验目的 创建 修改和删除表 xff0c 掌握数据表的基本操作 实验结果 创建数据库company xff
  • nginx自动摘除和恢复后端服务,进行自动检测

    主动地健康检查 xff0c nginx定时主动地去ping后端的服务列表 xff0c 当发现某服务出现异常时 xff0c 把该服务从健康列表中移除 xff0c 当发现某服务恢复时 xff0c 又能够将该服务加回健康列表中 nginx自带的u
  • nginx中配置root和alias的区别

    在nginx中 xff0c root和alias都可以代理静态资源 xff0c 那么他们两个有什么区别呢 xff1f 在什么情况下使用什么呢 初识 xff1a root和alias都可以在定义在location模块中 xff0c 都是用来请
  • 史上最全的mysql数据类型汇总-(上)

    mysql支持多种数据类型 xff0c 主要有数值类型 日期 时间类型以及字符串类型 整数类型 数值型数据类型主要用来存储数字 xff0c mysql提供了多种数值数据类型 xff0c 不同的数据类型提供不同的取值范围 xff0c 可以存储
  • 史上最全的mysql数据类型汇总(下)

    接着上文继续来梳理 xff0c 上文我们写到了日期与时间类型中的time类型 xff0c 然后我们接着来写日期与时间类型中的date类型 date类型 date类型用在仅需要日期值时 xff0c 没有时间部分 xff0c 在存储时需要3字节
  • mysql中的字段如何选择合适的数据类型呢?

    前面两篇我们介绍了很多种数据类型 xff0c 那么有没有看花眼呢 xff0c 我们在mysql中创建数据表的时候 xff0c 到底应该选择哪一种数据类型呢 xff1f 这次我们就来简单的梳理一下子把 准则 我们不论要如何创建数据表 xff0
  • mysql中的四大运算符种类汇总20多项,用了三天三夜来整理的,还不赶快收藏

    运算符连接表达式中的各个操作数 xff0c 他的作用是用来指明对数据表中的操作数所进行的运算 运用运算法有什么好处呢 xff1f 运用运算符可以更加灵活的使用表中的数据 xff0c 我们可以通过使用运算符来解决我们的很多问题 xff0c 大