Lindorm SQL incluye un conjunto de funciones de cadenas para manipular, buscar y generar hash de valores de texto. Todas las funciones descritas en esta página requieren LindormTable 2.5.1.1 o posterior.
Para comprobar su versión actual o actualizarla, consulte Release notes of LindormTable y Upgrade the minor engine version of a Lindorm instance .
Funciones de cadenas compatibles
|
Categoría |
Función |
Descripción |
|
Manipulación general |
Concatena varias cadenas en una sola |
|
|
Devuelve el número de caracteres de una cadena |
||
|
Reemplaza todas las apariciones de una subcadena |
||
|
Invierte una cadena |
||
|
Extrae una subcadena por posición y longitud |
||
|
Elimina los espacios al inicio y al final |
||
|
Conversión de mayúsculas y minúsculas |
Convierte todas las letras a minúsculas |
|
|
Convierte todas las letras a mayúsculas |
||
|
Expresiones regulares |
Reemplaza subcadenas que coinciden con una expresión regular |
|
|
Extrae la primera subcadena que coincide con una expresión regular |
||
|
Coincidencia de prefijos |
Devuelve true si una cadena comienza con un prefijo dado |
|
|
Búsqueda de texto completo |
Compara valores de columna con una expresión de búsqueda mediante un índice de búsqueda |
|
|
Hash criptográficos |
Devuelve el hash MD5 de una cadena |
|
|
Devuelve el hash SHA256 de una cadena |
CONCAT
Concatena dos o más cadenas en una sola. No se agrega ningún delimitador entre los valores.
Sintaxis
CONCAT('string1', 'string2', ..., 'stringN')
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
Las cadenas que se van a concatenar. Pase dos o más valores de cadena. |
Ejemplo
SELECT concat('a', 'b', 'c') AS val;
Resultado:
+-----+
| val |
+-----+
| abc |
+-----+
LENGTH
Devuelve el número de caracteres de una cadena.
Sintaxis
LENGTH('string')
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena que se va a medir. |
Ejemplo
SELECT length('abc') AS len;
Resultado:
+-----+
| len |
+-----+
| 3 |
+-----+
LOWER
Convierte todas las letras de una cadena a minúsculas. Los caracteres que no son letras no se ven afectados.
Sintaxis
LOWER('string')
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena que se va a convertir. |
Ejemplos
Ejemplo 1: Convertir ABC a minúsculas.
SELECT lower('ABC') AS val;
Resultado:
+-----+
| val |
+-----+
| abc |
+-----+
Ejemplo 2: Convertir una cadena con mayúsculas y minúsculas combinadas a minúsculas.
SELECT lower('Abc') AS val;
Resultado:
+-----+
| val |
+-----+
| abc |
+-----+
UPPER
Convierte todas las letras de una cadena a mayúsculas. Los caracteres que no son letras no se ven afectados.
Sintaxis
UPPER('string')
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena que se va a convertir. |
Ejemplos
Ejemplo 1: Convertir abc a mayúsculas.
SELECT upper('abc') AS val;
Resultado:
+-----+
| val |
+-----+
| ABC |
+-----+
Ejemplo 2: Convertir una cadena con mayúsculas y minúsculas combinadas a mayúsculas.
SELECT upper('aBC') AS val;
Resultado:
+-----+
| val |
+-----+
| ABC |
+-----+
TRIM
Elimina los espacios al inicio y al final de una cadena. Los espacios dentro de la cadena se conservan.
Sintaxis
TRIM('string')
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena a la que se le eliminarán los espacios. |
Ejemplo
SELECT trim(' abc ') AS str;
Resultado:
+-----+
| str |
+-----+
| abc |
+-----+
REPLACE
Reemplaza todas las apariciones de una subcadena dentro de una cadena.
Sintaxis
REPLACE('string', 'from_str', 'to_str')
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de origen. |
|
|
Sí |
La subcadena que se va a buscar y reemplazar. |
|
|
Sí |
La subcadena de reemplazo. |
Ejemplos
Ejemplo 1: Reemplazar bc en abc por cd.
SELECT replace('abc', 'bc', 'cd') AS val;
Resultado:
+-----+
| val |
+-----+
| acd |
+-----+
Ejemplo 2: Reemplazar todas las apariciones de bc en abcbc por cd.
SELECT replace('abcbc', 'bc', 'cd') AS val;
Resultado:
+-------+
| val |
+-------+
| acdcd |
+-------+
REVERSE
Invierte los caracteres de una cadena.
Sintaxis
REVERSE('string')
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena que se va a invertir. |
Ejemplo
SELECT reverse('abc') AS val;
Resultado:
+-----+
| val |
+-----+
| cba |
+-----+
SUBSTR
Extrae una subcadena a partir de una posición dada, con un límite de longitud opcional.
Sintaxis
SUBSTR(string, position [, length])
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de origen. |
|
|
Sí |
La posición base 1 donde comienza la extracción. Debe ser un entero >= 1. |
|
|
No |
El número de caracteres que se van a extraer. Debe ser un entero >= 1. Valor predeterminado: extrae desde |
Ejemplos
Ejemplo 1: Extraer desde la posición 2 hasta el final de la cadena.
SELECT substr('abc', 2) AS val;
Resultado:
+-----+
| val |
+-----+
| bc |
+-----+
Ejemplo 2: Extraer 2 caracteres a partir de la posición 1.
SELECT substr('abc', 1, 2) AS val;
Resultado:
+-----+
| val |
+-----+
| ab |
+-----+
START_WITH
Devuelve true si una cadena comienza con el prefijo especificado, y false en caso contrario.
Sintaxis
START_WITH('string', 'prefix')
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena que se va a comprobar. |
|
|
Sí |
El prefijo que se comparará con el inicio de |
Ejemplos
Ejemplo 1: Comprobar si abc comienza con ab.
SELECT start_with('abc', 'ab') AS val;
Resultado:
+------+
| val |
+------+
| true |
+------+
Ejemplo 2: Comprobar si abc comienza con bc.
SELECT start_with('abc', 'bc') AS val;
Resultado:
+-------+
| val |
+-------+
| false |
+-------+
REGEXP_REPLACE
Reemplaza las subcadenas que coinciden con una expresión regular, comenzando la búsqueda desde una posición especificada.
Sintaxis
REGEXP_REPLACE('string', pattern, replacement [, position])
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de origen. |
|
|
Sí |
El patrón de expresión regular que define la regla de coincidencia. |
|
|
Sí |
La cadena que sustituirá cada coincidencia. |
|
|
No |
La posición de carácter base 1 donde se inicia la búsqueda. Debe ser un entero >= 1. Valor predeterminado: |
Ejemplos
Ejemplo 1: Reemplazar todas las coincidencias de b en abc por c (posición predeterminada).
SELECT regexp_replace('abc', 'b', 'c') AS val;
Resultado:
+-----+
| val |
+-----+
| acc |
+-----+
Ejemplo 2: Reemplazar las coincidencias de b en abcbc a partir de la posición 2.
SELECT regexp_replace('abcbc', 'b', 'c', 2) AS val;
Resultado:
+-------+
| val |
+-------+
| acccc |
+-------+
Ejemplo 3: Reemplazar las coincidencias de b en abcbc a partir de la posición 3. La b en la posición 2 no se reemplaza.
SELECT regexp_replace('abcbc', 'b', 'c', 3) AS val;
Resultado:
+-------+
| val |
+-------+
| abccc |
+-------+
REGEXP_SUBSTR
Devuelve la primera subcadena que coincide con una expresión regular, comenzando la búsqueda desde una posición especificada.
Sintaxis
REGEXP_SUBSTR('string', pattern [, position])
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de origen. |
|
|
Sí |
El patrón de expresión regular que define la regla de coincidencia. |
|
|
No |
La posición de carácter base 1 donde se inicia la búsqueda. Debe ser un entero >= 1. Valor predeterminado: |
Ejemplos
Ejemplo 1: Buscar b en abc desde el primer carácter (valor predeterminado).
SELECT regexp_substr('abc', 'b') AS val;
Resultado:
+-----+
| val |
+-----+
| b |
+-----+
Ejemplo 2: Buscar b en abc a partir de la posición 3. No se encuentra ninguna coincidencia porque b está en la posición 2.
SELECT regexp_substr('abc', 'b', 3) AS val;
Resultado:
+-----+
| val |
+-----+
| |
+-----+
MD5
Devuelve el hash MD5 de una cadena.
Sintaxis
MD5('string')
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de la que se obtendrá el hash. |
Ejemplo
SELECT md5('abc') AS val;
Resultado:
+----------------------------------+
| val |
+----------------------------------+
| 900150983cd24fb0d6963f7d28e17f72 |
+----------------------------------+
SHA256
Devuelve el hash SHA256 de una cadena.
Sintaxis
SHA256('string')
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
La cadena de la que se obtendrá el hash. |
Ejemplo
Este ejemplo crea una tabla de muestra, inserta una fila y luego consulta el hash SHA256 del valor de una columna.
-- Create a sample table.
CREATE TABLE tb (id INT, name VARCHAR, address VARCHAR, PRIMARY KEY(id, name));
-- Insert a row.
UPSERT INTO tb (id, name, address) VALUES (1, 'jack', 'hz');
-- Query the SHA256 hash of the name column.
SELECT sha256(name) AS sc FROM tb WHERE id = 1;
Resultado:
+------------------------------------------------------------------+
| sc |
+------------------------------------------------------------------+
| 31611159e7e6ff7843ea4627745e89225fc866621cfcfdbd40871af4413747cc |
+------------------------------------------------------------------+
MATCH
Busca valores de columna mediante una expresión de búsqueda de texto completo y un índice de búsqueda. Los resultados se ordenan por relevancia en orden descendente de forma predeterminada.
MATCH requiere LindormTable 2.7.2 o posterior. Para actualizar, consulte Release notes of LindormTable y upgrade your instance.
MATCH solo funciona con índices de búsqueda. Cuando existen tanto una condición MATCH como un índice de búsqueda, el sistema utiliza el índice de búsqueda automáticamente.
Notas de uso
Columnas no indexadas: El sistema primero recupera filas mediante el índice de búsqueda y luego filtra las columnas no indexadas fila por fila. Esto puede degradar el rendimiento en conjuntos de datos grandes. Para evitarlo, utilice la instrucción ADD COLUMN para agregar las columnas relevantes al índice de búsqueda.
Tablas principales e índices secundarios: MATCH no es compatible con tablas principales ni índices secundarios. Para estos casos, utilice
LIKEpara consultas difusas. Las consultas difusas ofrecen un rendimiento inferior al de las consultas tokenizadas.Combinación de MATCH y LIKE: Al usar ambos en la misma consulta, configure las columnas relevantes como tokenized columns en el índice de búsqueda.
Sintaxis
MATCH (column_identifiers) AGAINST (search_expr)
MATCH solo se puede utilizar en la cláusula WHERE de una instrucción SELECT.
Parámetros
|
Parámetro |
Obligatorio |
Descripción |
|
|
Sí |
Uno o más nombres de columna donde buscar, separados por comas. Si se especifican varias columnas, sus valores se combinan y se comparan juntos. Deben existir índices de búsqueda para todas las columnas especificadas, con analizadores configurados para la segmentación de palabras. Consulte Enable the search index feature y CREATE INDEX. |
|
|
Sí |
Una constante de cadena que define la regla de coincidencia. Consulte Match rule syntax a continuación. |
Sintaxis de reglas de coincidencia
Una regla de coincidencia consta de una o más condiciones separadas por espacios. Cada condición puede ser:
Una sola palabra: coincide con filas que contienen esa palabra. Ejemplo:
helloUna frase entre comillas: coincide con filas que contienen la frase exacta sin segmentación de palabras. Ejemplo:
"hello world"Una subregla entre paréntesis: coincide con filas que satisfacen la regla encerrada. Ejemplo:
(another "hello world")
Anteponga un símbolo a una condición para cambiar su comportamiento:
|
Símbolo |
Significado |
|
|
La condición debe cumplirse (AND) |
|
|
La condición no debe cumplirse (NOT) |
|
(ninguno) |
La condición es opcional, pero las filas coincidentes tienen mayor clasificación |
Ejemplos
Los siguientes ejemplos utilizan esta tabla de muestra:
-- Create a sample table.
CREATE TABLE tb (id INT, c1 VARCHAR, PRIMARY KEY(id));
-- Create a search index. Enable the search index feature before running this statement.
CREATE INDEX idx USING SEARCH ON tb (c1(type=text));
-- Insert rows.
UPSERT INTO tb (id, c1) VALUES (1, 'hello');
UPSERT INTO tb (id, c1) VALUES (2, 'world');
UPSERT INTO tb (id, c1) VALUES (3, 'hello world');
UPSERT INTO tb (id, c1) VALUES (4, 'hello my world');
UPSERT INTO tb (id, c1) VALUES (5, 'hello you');
UPSERT INTO tb (id, c1) VALUES (6, 'hello you and me');
UPSERT INTO tb (id, c1) VALUES (7, 'you and me');
Ejemplo 1: Devolver filas donde c1 contenga hello o world (o ambos). Las filas que coinciden con ambos términos tienen mayor clasificación.
SELECT * FROM tb WHERE MATCH (c1) AGAINST ('hello world');
Resultado:
+----+------------------+
| id | c1 |
+----+------------------+
| 3 | hello world |
| 2 | world |
| 4 | hello my world |
| 5 | hello you |
| 1 | hello |
| 6 | hello you and me |
+----+------------------+
Ejemplo 2: Devolver filas donde c1 deba contener world y opcionalmente contenga hello. Las filas con ambos términos tienen mayor clasificación.
SELECT * FROM tb WHERE MATCH (c1) AGAINST ('hello +world');
Resultado:
+----+----------------+
| id | c1 |
+----+----------------+
| 3 | hello world |
| 2 | world |
| 4 | hello my world |
+----+----------------+
Ejemplo 3: Devolver filas donde c1 contenga world pero no hello.
SELECT * FROM tb WHERE MATCH (c1) AGAINST ('-hello +world');
Resultado:
+----+-------+
| id | c1 |
+----+-------+
| 2 | world |
+----+-------+
Ejemplo 4: Devolver filas donde c1 contenga la frase exacta hello world.
SELECT * FROM tb WHERE MATCH (c1) AGAINST ('"hello world"');
Resultado:
+----+-------------+
| id | c1 |
+----+-------------+
| 3 | hello world |
+----+-------------+
Ejemplo 5: Devolver filas donde c1 deba contener hello y al menos uno de you o me.
SELECT * FROM tb WHERE MATCH (c1) AGAINST ('+hello +(you me)');
Resultado:
+----+------------------+
| id | c1 |
+----+------------------+
| 6 | hello you and me |
| 5 | hello you |
+----+------------------+