Los cuatro operadores de MySQL (operadores aritméticos, operadores de comparación, operadores lógicos y operadores de bits)

Uno, operadores aritméticos

Los operadores aritméticos que admite MySQL.
Operador Comentario
+ adición
- Sustracción
* multiplicación
/ división
% Toma el resto
Ejemplos de uso
 mysql> select 1+2,5-3,3*4,4/3,7%2;
+-----+-----+-----+--------+------+
| 1+2 | 5-3 | 3*4 | 4/3    | 7%2  |
+-----+-----+-----+--------+------+
|   3 |   2 |  12 | 1.3333 |    1 |
+-----+-----+-----+--------+------+
1 row in set (0.00 sec)

1) En la operación de división y la operación de resto, el divisor no puede ser 0. Si el divisor es O, el resultado devuelto es NULL. Cabe señalar que si hay varios operadores, las operaciones se realizan según la prioridad de multiplicación y división seguida de suma y resta, los operadores con la misma prioridad no están en orden.

2) Hay otro caso en el valor del campo MySQL. Ciertos campos de tipo cadena almacenan cadenas numéricas. Estos campos se convertirán automáticamente en valores numéricos durante las operaciones aritméticas. Si el comienzo de la cadena es un número, se convertirá a este número durante la conversión. Si es una cadena mixta que contiene tanto caracteres como números, se convertirá a 0 si no se puede convertir a un número. Estos detalles requieren más atención al realizar operaciones aritméticas.

En segundo lugar, el operador de comparación

Los operadores de comparación son un tipo de operadores que se utilizan a menudo al consultar registros de datos. Al usar el operador de comparación, puede determinar qué registros de la tabla son elegibles. Si el resultado de la comparación es verdadero, devuelve 1, si es falso, devuelve 0, y si el resultado de la comparación es incierto, devuelve NULL. Las cadenas no distinguen entre mayúsculas y minúsculas de forma predeterminada al comparar.

Operadores de comparación de uso común de MySQL
Operador Comentario
= igual
> mas que el
< Menos que
<= Menos que o igual a
> = mayor o igual a
! = o <> no igual a
ES NULO Determinar si un valor es NULO
NO ES NULO Determinar si un valor no es NULO
EN MEDIO Y Entre los dos
EN En la colección
ME GUSTA Coincidencia de comodines, consulta difusa
MEJOR Devuelve el valor máximo para dos o más parámetros
MENOS Devuelve el valor mínimo para dos o más parámetros
1. Igual al operador

"=" se usa para determinar si los números, cadenas y expresiones son iguales. Si son iguales, devuelve 1 y si no son iguales, devuelve 0. Si una de las dos comparaciones es NULL, el resultado de la comparación es NULL. Entre ellos, la comparación de caracteres se juzga según el código ASCII. Si el código ASCII es igual, significa que los dos caracteres son iguales; si el código ASCII no es igual, significa que los dos caracteres no son iguales.

  • Valor ASCII de uso común I
    Inserte la descripción de la imagen aquí
Ejemplos de uso
mysql> select 5=5,'e'='e',(2+6)=(3+5),6='6',4=null;
+-----+---------+-------------+-------+--------+
| 5=4 | 'a'='e' | (2+6)=(3+5) | 6='6' | 4=null |
+-----+---------+-------------+-------+--------+
|   0 |       0 |           1 |     1 |   NULL |
+-----+---------+-a------------+-------+--------+
1 row in set (0.00 sec)

Nota

1) Si ambos son números enteros, compárelos según el valor entero.
2) Si un entero es una cadena y el valor del campo es del mismo tipo, la cadena se convertirá automáticamente en un número y luego se comparará.
3) Si ambas son cadenas, compárelas de acuerdo con las cadenas.
4) Si al menos uno de los dos valores es NULL, el resultado de la comparación es NULL.

2. No igual al operador

Hay dos formas de escribir el signo de desigualdad, a saber, <> o =, que se usa para comparar números, cadenas y expresiones que no son iguales.
Si no es igual, devuelve 1, y si es igual, devuelve 0, que es exactamente lo opuesto al valor devuelto de igual. Cabe señalar que el
operador desigual no se puede utilizar para juzgar NULL.

Ejemplos de uso
mysql> select 3<>3,4!='a','abc'!='cba',0<>null;
+------+--------+--------------+---------+
| 3<>3 | 4!='a' | 'abc'!='cba' | 0<>null |
+------+--------+--------------+---------+
|    0     |      1 |            1      |    NULL |
+------+--------+--------------+---------+
1 row in set, 1 warning (0.00 sec)
3. Operadores mayor que, mayor o igual, menor que, menor o igual que
  • El operador mayor que (>) se usa para determinar si el operando de la izquierda es mayor que el operando de la derecha, si es mayor, devuelve 1, de lo contrario devuelve 0. No se puede usar para determinar NULL.
  • El operador menor que (<) se usa para determinar si el operando de la izquierda es menor que el operando de la derecha. Si es menor, devuelve 1; de lo contrario, devuelve 0 y no se puede usar para juzgar NULL.
  • Mayor o igual que (> =) para determinar si el operando de la izquierda es mayor o igual que el operando de la derecha, si es mayor o igual que 1, devuelve 1; de lo contrario, devuelve 0 y no se puede utilizar para determinar NULL.
  • Menor o igual que (<=) para determinar si el operando de la izquierda es menor o igual que el operando de la derecha, si es menor o igual que 1, devuelve 1; de lo contrario, devuelve y no se puede utilizar para determinar NULL.
Ejemplos de uso
mysql> select 5>2,'a'>4,'b'<'a','abc'< 'baa',null<9,(5+3)<=(6+8);
+-----+-------+---------+--------------+--------+--------------+
| 5>2 | 'a'>4 | 'b'<'a' | 'abc'< 'baa' | null<9 | (5+3)<=(6+8) |
+-----+-------+---------+--------------+--------+--------------+
 |   1 |     0 |       0 |            1 |   NULL |            1 |
+-----+-------+---------+--------------+--------+--------------+
1 row in set, 1 warning (0.00 sec)

//字符串做比较时默认只会比较第一个字符的的大小。
//不同类型的字段类型无法比较,返回值为0
4. Operadores IS NULL, IS NOTNULL

IS NULL juzga si un valor es NULL, devuelve 1 si es NULL, de lo contrario devuelve 0
IS NOT NULL juzga si un valor no es NULL, devuelve 1 si no es NULL, de lo contrario devuelve 0

Ejemplos de uso
mysql> select 2 IS NULL,'' IS NOT NULL,NULL IS NULL,0 IS NULL;
+-----------+----------------+--------------+-----------+
| 2 IS NULL | '' IS NOT NULL | NULL IS NULL | 0 IS NULL |
+-----------+----------------+--------------+-----------+
|         0 |              1 |            1 |         0 |
+-----------+----------------+--------------+-----------+
1 row in set (0.00 sec)

//空值不等于NULL。空值虽然不占用空间,但是也表示一个值。
//NULL虽然占用空间,但是不表示一个值,只表示一个NULL对象。
5. ENTRE Y operador

La operación de comparación BETWEENAND se usa generalmente para determinar si un valor cae entre dos valores. Puede usarse para determinar si un número entero o inglés se encuentra entre un determinado número o letra.

Ejemplos de uso
mysql> select 5 between 2 and 8,'a' between 'a' and 'b',6 between 1 and 6,'a' between 'b' and 'z';
+-------------------+-------------------------+-------------------+-------------------------+
| 5 between 2 and 8 | 'a' between 'a' and 'b' | 6 between 1 and 6 | 'a' between 'b' and 'z' |
+-------------------+-------------------------+-------------------+-------------------------+
|                 1 |                       1 |                 1 |                       0 |
+-------------------+-------------------------+-------------------+-------------------------+
1 row in set (0.00 sec)

// between对于取值之间的头尾是包含的。类似与小于等于和大于等于。
6, MENOS, MEJOR operador

MENOS: Cuando hay dos o más parámetros, se devuelve el valor mínimo. Si uno de los valores es NULL, el
resultado devuelto es NULL.
MÁS GRANDE: Cuando hay dos o más parámetros, se devuelve el valor máximo. Si uno de los valores es NULL
, el resultado devuelto es NULL.

Ejemplos de uso
 mysql> select least(1,2,3,3.1),least('a','b','c'),least('a',5,'b'),least(1,4,8);
+------------------+--------------------+------------------+--------------+
| least(1,2,3,3.1) | least('a','b','c') | least('a',5,'b') | least(1,4,8) |
+------------------+--------------------+------------------+--------------+
|              1.0 | a                  | 0                |            1 |
+------------------+--------------------+------------------+--------------+
1 row in set, 2 warnings (0.00 sec)

//least :可以比较整数类型和浮点型的最小值,输出类型自动转换为浮点型的最小值。
//least:不能比较整数和字符串类型的最小值。

mysql> select greatest('a','c',5),greatest(4,5,7),greatest(4.5,5,7),greatest('a','y','b');
+---------------------+-----------------+-------------------+-----------------------+
| greatest('a','c',5) | greatest(4,5,7) | greatest(4.5,5,7) | greatest('a','y','b') |
+---------------------+-----------------+-------------------+-----------------------+
| 5                   |               7 |               7.0 | y                     |
+---------------------+-----------------+-------------------+-----------------------+
1 row in set, 2 warnings (0.00 sec)

//greatest:可以比较整数类型和浮点型的最大值,输出类型自动转换为浮点型的最大值
//greatest:可以比较整数型和字符型的最大值,但是会将字符串类型的值忽略不参与比较
Operador 7, IN, NOTIN

IN: Determina si un valor está en la lista correspondiente, si es 1, devuelve 1, de lo contrario devuelve 0.
NOT IN: Determina si un valor no está en la lista correspondiente, si no lo está, devuelve 1, de lo contrario devuelve 0

Ejemplos de uso
mysql> select 'a' in ('a','b', 'c'),'c' not in ('a','b','c');
+-----------------------+--------------------------+
| 'a' in ('a','b', 'c') | 'c' not in ('a','b','c') |
+-----------------------+--------------------------+
|                     1 |                        0 |
+-----------------------+--------------------------+
1 row in set (0.00 sec)

Operadores 8, LIKE, NOTLIKE

LIKE se usa para hacer coincidir cadenas, si la coincidencia es exitosa, devuelve 1, de lo contrario, devuelve 0. LIKE admite dos comodines: '%' se usa para coincidir con cualquier número de caracteres y'_ 'solo puede coincidir con un carácter.
NOT LIKE es lo opuesto a LIKE. Si no hay coincidencia, devuelve 1; de lo contrario, devuelve 0

Ejemplos de uso
mysql> select 'abc' like 'a%',12 like '1_' ,35 not like '3_67','ac'not like '__';
+-----------------+--------------+--------------------+-------------------+
| 'abc' like 'a%' | 12 like '1_' | 35 not like '3_67' | 'ac'not like '__' |
+-----------------+--------------+--------------------+-------------------+
|               1 |            1 |                  1 |                 0 |
+-----------------+--------------+--------------------+-------------------+
1 row in set (0.00 sec)

Tres, operadores lógicos

Los operadores lógicos también se denominan operadores booleanos. Suelen utilizarse para determinar si una expresión es verdadera o falsa. Si es verdadera, devuelve 1, de lo contrario devuelve 0. Verdadero y falso también se pueden representar con VERDADERO y FALSO.

Hay cuatro operadores lógicos compatibles con MySQL
Operador Comentario
¡NO o! Negación lógica
Y 或 && Lógico y
O 或 II OR lógico
XOR OR lógico exclusivo
  • Forma de entender
                  1表示为真TURE,0表示为假FALSE
逻辑非                 1!= 0              0!= 1
 真的为假,假的为真
 
逻辑与              0&&0=0             1&&0=0       0&&!=0      1&&1=1  
两个条件都为真为真,两个为假为假

逻辑或              0||0=0               1||0=1          0||1=1         1||1=1  
两个条件有一个为真则为真,两个为假为假

逻辑异或          0xor0=0             1xor0=1       0&&1=1     1xor1=0
两个条件一个为真即为真,两个为真或两个为假为假
1. Negación lógica

El operador más simple en los operadores lógicos es la negación lógica, que está representada por NOT o!.

Operación de ejemplo
mysql> select not 2,!3,not 0,!(4%2),!NULL;
+-------+----+-------+--------+-------+
| not 2 | !3 | not 0 | !(4%2) | !NULL |
+-------+----+-------+--------+-------+
|     0 |  0 |     1 |      1 |  NULL |
+-------+----+-------+--------+-------+
1 row in set (0.00 sec)
  • La negación lógica niega la prueba lógica que la sigue, convirtiéndose de verdadero en falso y de falso en verdadero.
    1) Si el operando que sigue a NOT es 0, el valor resultante es 1;
    2) Si el operando no es cero, el valor resultante es 0;
    3) Si el operando es NULL, el valor resultante es NULL.
2. Y lógico

El Y lógico se usa generalmente para juzgar la validez de dos o más valores, y el Y lógico se representa por Y o &&

Operación de ejemplo
mysql> select 2 and 5,6 && 0,0&&NULL,1 and NULL;
+---------+--------+---------+------------+
| 2 and 5 | 6 && 0 | 0&&NULL | 1 and NULL |
+---------+--------+---------+------------+
|       1 |      0 |       0 |       NULL |
+---------+--------+---------+------------+
1 row in set (0.00 sec)
  • Logic AND juzga la prueba lógica, todos los valores devueltos son verdaderos, devuelven verdadero, de lo contrario devuelven falso.

El significado de NULL en juicio lógico

NULL no significa que 0 o 1 sea verdadero o falso. Cuando la condición de juicio no se puede juzgar verdadera o falsa debido a la existencia de NULL, devuelve un valor NULL

Analizando condiciones && II xor
1 y NULL NULO 1 1
NULL y 1 NULO 1 1
0 y NULL 0 NULO NULO
NULL y 0 0 NULO NULO
NULL y NULL NULO NULO NULO
3. OR lógico

OR lógico significa dos o más valores, cualquiera de los cuales no es cero, es decir, devuelve verdadero. OR lógico está representado por || o OR

Operación de ejemplo
MySQL 5.6  识别 “||” 符号的或运算符 
mysql>  select 4||5,6 or 0,0||5;
+------+--------+------+
| 4||5 | 6 or 0 | 0||5 |
+------+--------+------+
| 45   |      1 | 05   |
+------+--------+------+
1 row in set (0.00 sec)

MySQL 5.7  不识别 “||” 符号的或运算符,5.7逻辑与判断的时候建议都使用 “or” 或运算符
mysql>  select 4||5,6 or 0,0||5;
+------+--------+------+
| 4||5 | 6 or 0 | 0||5 |
+------+--------+------+
| 45   |      1 | 05   |
+------+--------+------+
1 row in set (0.00 sec)
4. XOR lógico

Operandos con dos valores cualesquiera, si ambos son 0 o ambos son distintos de cero, devuelve 0; si uno es 0 y el otro no es cero, el resultado devuelto es 1; cuando cualquiera de los valores es NULL, el valor devuelto Es nulo. El OR lógico exclusivo está representado por "xor"

Operación de ejemplo
mysql> select 5 xor 6,0 xor 0,0 xor 5;
+---------+---------+---------+
| 5 xor 6 | 0 xor 0 | 0 xor 5 |
+---------+---------+---------+
|       0 |       0 |       1 |
+---------+---------+---------+
1 row in set (0.00 sec)

Operador de cuatro bits

Los operadores de bits son en realidad operadores que realizan cálculos con números binarios .
Las operaciones bit a bit en MySQL primero convertirán los operandos a formato binario, luego realizarán operaciones bit a bit y finalmente convertirán el resultado del cálculo de binario a formato decimal para que los usuarios lo vean.

MySQL admite 6 operadores bit a bit
Operador de bits Comentario
Y Bitwise y
yo Bit a bit o
~ Negación bit a bit
^ XOR bit a bit
<< Desplazamiento de bits a la izquierda
>> Desplazamiento de bits a la derecha
Operación de ejemplo
  • AND, OR, XOR, negación bit a bit
mysql> select 15&5,8|5,5^10,10&~1;
+------+-----+------+-------+
| 15&5 | 8|5 | 5^10 | 10&~1 |
+------+-----+------+-------+
|    5 |  13 |   15 |    10 |
+------+-----+------+-------+
1 row in set (0.00 sec)

运算过程                           15&5                          8|5                    5^10                      10&~1
第一步转换为二进制           15=1111      5=101              8=1000   5=101         5=101    10=1010            10=1010  1=1
第二步将二进制数一位一位对其进行运算符判断,对其方式为右对其向左补零。                                                 ~1=1110   
                                15=1111                        8=1000                  5=0101                     10=1010
                                 5=0101                        5=0101                 10=1010                     ~1=1110
                      得到          0101=5                        1101=13                 1111=15                     1010=10
  • Operación AND bit a bit (&), los bits binarios correspondientes son todos 1, y su resultado de operación es 1; de lo contrario, es 0.

  • La operación OR bit a bit (|) significa que uno o dos de los bits binarios correspondientes son 1 y el resultado de la operación es 1; de lo contrario, es 0.

  • Operación XOR bit a bit (^), cuando los bits binarios correspondientes no son iguales, el resultado de la operación es 1, en caso contrario es 0.

  • La inversión bit a bit (~) significa que el número binario correspondiente se invierte bit a bit, es decir, 1 se convierte en 0 después de la inversión y se convierte en 1 después de la inversión. Por lo general, se usa en combinación con otras operaciones de bit y el valor se invierte primero El complemento de otro valor es realizar otras operaciones de operador bit a bit.

  • Desplazamiento de bits a la izquierda, a la derecha

mysql> select 5<<2,2<<5,15>>3,25>>5;
+------+------+-------+-------+
| 5<<2 | 2<<5 | 15>>3 | 25>>5 |
+------+------+-------+-------+
|   20 |   64 |     1 |     0 |
+------+------+-------+-------+
1 row in set (0.00 sec)

向左位移过程  5<<2
转换为二进制 5=101
将5的二进制数整体向左移动两个位置空出来的补零得到 10100
转换为十进制为25

向右位移的过程 15>>3
转换为二进制 15=1111
将15的二进制数整体向右移动三个位置,移出的数丢弃得到 1
转换为十进制为1

Nota : El operador de desplazamiento a la izquierda o desplazamiento a la derecha es convertir el número a binario y luego desplazar el número especificado de dígitos hacia la izquierda o hacia la derecha, los dígitos en exceso se eliminarán y descartarán, y la posición vacante se llenará con 0 .

Cinco, la precedencia de los operadores

Los operadores tienen problemas prioritarios en su uso. La precedencia de los operadores determina el orden de los diferentes operadores en el proceso de cálculo. Los operadores con niveles más altos se calcularán primero, si los operadores son del mismo nivel, MySQL realizará los cálculos en orden de izquierda a derecha. Si no está seguro de la prioridad del operador utilizado, puede usar () para cambiar la prioridad.

Tabla de prioridades de operadores comunes de MySQL

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/wulimingde/article/details/109097424
Recomendado
Clasificación