SQLite Cláusula GLOB

de SQLiteGLOBEl operador se utiliza para hacer coincidir valores de texto con patrones especificados por comodines. Si la expresión de búsqueda coincide con la expresión de patrón, el operador GLOB devolverá verdadero (true), es decir, 1. A diferencia del operador LIKE, GLOB distingue entre mayúsculas y minúsculas, y para los siguientes comodines, sigue la sintaxis de UNIX.

  • *: Coincide con cero, uno o más dígitos o caracteres.
  • ?: Representa un solo dígito o carácter.
  • [...]: Coincide con uno de los caracteres especificados entre corchetes. Por ejemplo,[abc]Coincide con cualquier carácter de 'a', 'b' o 'c'.
  • [^...]: Coincide con un carácter que no esté entre los especificados entre corchetes. Por ejemplo,[^abc]Coincide con cualquier carácter que no sea 'a', 'b' o 'c'.

Estos símbolos anteriores se pueden combinar.

Sintaxis

*y?La sintaxis básica es la siguiente:

SELECT FROM table_name
WHERE column GLOB 'XXXX*'

or 

SELECT FROM table_name
WHERE column GLOB '*XXXX*'

or

SELECT FROM table_name
WHERE column GLOB 'XXXX?'

or

SELECT FROM table_name
WHERE column GLOB '?XXXX'

or

SELECT FROM table_name
WHERE column GLOB '?XXXX?'

or

SELECT FROM table_name
WHERE column GLOB '????'

Puede usar los operadores AND u OR para combinar N condiciones. Aquí, XXXX puede ser cualquier valor numérico o de cadena.

Ejemplos

A continuación, algunos ejemplos demuestran las diferencias de la cláusula GLOB con los operadores '*' y '?':

SentenciaDescripción
WHERE SALARY GLOB '200*'Busca cualquier valor que comience con 200.
WHERE SALARY GLOB '*200*'Busca cualquier valor que contenga 200 en cualquier posición.
WHERE SALARY GLOB '?00*'Busca cualquier valor cuyo segundo y tercer carácter sean 00.
WHERE SALARY GLOB '2??'Busca cualquier valor que comience con 2 y tenga 3 caracteres de longitud; por ejemplo, podría coincidir con valores como '200', '2A1', '2B2'.
WHERE SALARY GLOB '*2'Busca cualquier valor que termine en 2.
WHERE SALARY GLOB '?2*3'Busca cualquier valor cuyo segundo carácter sea 2 y que termine en 3.
WHERE SALARY GLOB '2???3'Busca cualquier valor de 5 dígitos de longitud que comience con 2 y termine en 3.

Tomemos un ejemplo práctico, supongamos que la tabla COMPANY tiene los siguientes registros:

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

El siguiente es un ejemplo que muestra todos los registros de la tabla COMPANY donde AGE comienza con 2:

sqlite> SELECT * FROM COMPANY WHERE AGE  GLOB '2*';

Esto producirá el siguiente resultado:

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

El siguiente es un ejemplo que muestra todos los registros de la tabla COMPANY donde el texto ADDRESS contiene un guion (-):

sqlite> SELECT * FROM COMPANY WHERE ADDRESS  GLOB '*-*';

Esto producirá el siguiente resultado:

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
4           Mark        25          Rich-Mond   65000.0
6           Kim         22          South-Hall  45000.0

Comodín [...]

[...]La expresión se utiliza para hacer coincidir cualquier carácter del conjunto especificado entre corchetes.

Ejemplo 1: Coincide con los nombres de producto que comienzan con 'A' o 'B'.

SELECT * FROM products WHERE product_name LIKE '[AB]%';

Esto coincidirá con los nombres de producto que comiencen con 'A' o 'B'.

Ejemplo 2: Coincide con los números de teléfono que comienzan con '1', '2' o '3'.

SELECT * FROM customers WHERE phone_number LIKE '[123]%';

Esto coincidirá con los números de teléfono que comiencen con '1', '2' o '3'.

Comodín [^...]

[^...]La expresión se utiliza para hacer coincidir cualquier carácter que no esté en el conjunto especificado entre corchetes.

Ejemplo 1: Coincide con los códigos de producto que no comienzan con 'X' ni 'Y'.

SELECT * FROM products WHERE product_code LIKE '[^XY]%';

Esto coincidirá con los productos que no comiencen con 'X' ni 'Y'.

código.

Ejemplo 2: Coincide con nombres de usuario que no contienen caracteres numéricos.

SELECT * FROM users WHERE username LIKE '[^0-9]%';

Esto coincidirá con los nombres de usuario que no comiencen con un carácter numérico.

Otras extensiones