5 Operadores
Repasemos ahora los operadores SQL, y algunos específicos de SQLite.
Operadores aritméticos
Los operadores aritméticos se aplican a valores numéricos. SQLite dispone de los operadores aritméticos habituales:
- *
- Multiplicación
- /
- División
- +
- Suma
- -
- Resta
- %
- Módulo o resto de división entera
Además de los operadores unitarios de signo:
- +
- No hace nada
- -
- Cambio de signo
Operadores booleanos
Para expresiones lógicas disponemos de los siguientes operadores, los tres de siempre:
- AND
- Y lógico
- OR
- O lógico
- NOT
- Negación lógica
El operador NOT, por supuesto, es un operador unitario.
No existen las constantes booleanas true y false. El valor 0 se considera falso, y cualquier valor distinto de 0 se considera verdadero:
sqlite> SELECT 1 OR 3; 1 OR 3 1 sqlite> SELECT 0 AND 3; 0 AND 3 0 sqlite> SELECT NOT 2; NOT 2 0 sqlite>
Tampoco existen, como pasa en MySQL, las alternativas &&, || y ! para los operadores AND, OR y NOT, respectivamente.
Operadores de comparación
Para hacer comparaciones disponemos del arsenal completo de operadores de comparación:
- <
- Menor que
- <=
- Menor o igual que
- >
- Mayor que
- >=
- Mayor o igual que
- = ó ==
- Igual a
- != ó <>
- Distinto de
Además de dos específicos para comparar con NULL:
- IS
- Si el valor es NULL devuelve true
- NOT IS
- Si el valor no es NULL devuelve true
Operadores de bits
Los operadores de bits incluyen las operaciones básicas, Y, O y No, además de los operadores de desplazamiento a izquierda y derecha.
- &
- Y de bits
- |
- O de bits
- ~
- Complemento a 1, negación de bits
- <<
- Desplazamiento a la izquierda (multiplicar por 2 n veces)
- >>
- Desplazamiento a la derecha (división por 2 n veces)
sqlite> SELECT 1 | 2; 1 | 2 3 sqlite> SELECT 1 & 3; 1 & 3 1 sqlite> SELECT 1 << 3; 1 << 3 8 sqlite> SELECT 8 >> 2; 8 >> 2 2 sqlite> SELECT ~5; ~5 -6 sqlite>
Concatenación
SQLite dispone de un operador para concatenar cadenas:
- ||
- Concatenación
sqlite> SELECT "Hola" || " y " || "adios"; "Hola" || " y " || "adios" Hola y adios sqlite>
Pertenencia a conjunto
El operadro IN permite verificar si un valor está dentro de un conjunto dado:
sqlite> SELECT 'a' IN ('a','e','i','o','u'); 'a' IN ('a','e','i','o','u') 1 sqlite>
Comparación con patrones
Disponemos de dos operadores para camparar cadenas con un patrón:
- LIKE
- Operador de patrones SQL, los comodines son % para cadenas y _ para caracteres, no distingue mayúsculas de minúsculas
- GLOB
- Operador de patrones SQLite, los comodines son * para cadenas y ? para carácteres, se distingue entre mayúsculas y minúsculas
sqlite> SELECT 'hola' LIKE '_o%', 'hola' GLOB 'H*'; 'hola' LIKE '_o%'|'hola' GLOB 'H*' 1|0 sqlite>
Pertenencia a rango
Por último, disponemos del operador de rango BETWEEN, que permite verificar si un valor está incluído en un rango definido por un valor máximo y un valor mínimo.
El rango no tiene por qué ser de números:
sqlite> SELECT 2 BETWEEN 0 AND 4; 2 BETWEEN 0 AND 4 1 sqlite> SELECT 'fa' BETWEEN 'aa' AND 'zz'; 'fa' BETWEEN 'aa' AND 'zz' 1 sqlite>