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
!= ó <>/dt>
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>