La precedencia es el orden en el que se evalúan los operadores SQL.

La siguiente lista muestra la precedencia del operador SQL. Los operadores que aparecen en primer lugar en la lista tienen mayor prioridad. Los operadores que se enumeran juntos tienen la misma precedencia.

  • INTERVAL
  • BINARY, COLLATE
  • !
  • - (unario menos), [[bitwise-not|]](inversión de bits unarios)
  • || (concatenación de cadenas)
  • ^
  • *, /, DIV, %, MOD
  • -, +
  • <<, >>
  • &
  • |
  • = (comparación), <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
  • BETWEEN, CASE, WHEN, THEN, ELSE, END
  • NOT
  • &&, AND
  • XOR
  • || (lógico o), OR
  • = (asignación), :=

La precedencia de las funciones es siempre mayor que la precedencia de los operadores.

En esta pagina CASE se refiere al operador CASE, no a la sentencia CASE.

Si el HIGH_NOT_PRECEDENCE SQL_MODE está establecido, NOT tiene la misma precedencia que !.

los || La precedencia del operador, así como su significado, depende de la PIPES_AS_CONCAT Indicador SQL_MODE: si está activado, || se puede usar para concatenar cadenas (como la función CONCAT ()) y tiene mayor precedencia.

los = La precedencia del operador depende del contexto; es mayor cuando = se utiliza como operador de comparación.

Los paréntesis se pueden utilizar para modificar la precedencia de los operadores en una expresión.

Evaluación de cortocircuito

los AND, OR, && y || Los operadores apoyan la evaluación de cortocircuitos. Esto significa que, en algunos casos, la expresión a la derecha de esos operadores no se evalúa, porque su resultado no puede afectar el resultado. En los siguientes casos, se utiliza la evaluación de cortocircuito y x() no se evalúa:

  • FALSE AND x()
  • FALSE && x()
  • TRUE OR x()
  • TRUE || x()
  • NULL BETWEEN x() AND x()

Sin embargo, tenga en cuenta que la evaluación de cortocircuito no no aplicar para NULL AND x(). También, BETWEENLos operandos de la derecha no se evalúan si el operando de la izquierda es NULL, pero en todos los demás casos se evalúan todos los operandos.

Esta es una optimización de velocidad. Además, dado que las funciones pueden tener efectos secundarios, este comportamiento puede usarse para elegir si ejecutarlas o no usando una sintaxis concisa:

SELECT some_function() OR log_error();

El contenido reproducido en este sitio es propiedad de sus respectivos dueños, y MariaDB no revisa este contenido con anticipación. Los puntos de vista, la información y las opiniones expresadas por este contenido no representan necesariamente las de MariaDB o de cualquier otra parte.