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 '?':
| Sentencia | Descripció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