alphaTokens
Introducido en: v1.1.0
Selecciona subcadenas de bytes consecutivos de los rangos a-z y A-Z y devuelve un Array con las subcadenas seleccionadas.
Sintaxis
alphaTokens(s[, max_substrings])Alias: splitByAlpha
Argumentos
s— La cadena que se va a dividir.Stringmax_substrings— Opcional. Cuandomax_substrings > 0, el número de subcadenas devueltas no será mayor quemax_substrings; de lo contrario, la función devolverá tantas subcadenas como sea posible.Int64
Valor devuelto
Devuelve un Array de las subcadenas seleccionadas de s. Array(String)
Ejemplos
Ejemplo de uso
SELECT alphaTokens('abca1abc');┌─alphaTokens('abca1abc')─┐
│ ['abca','abc'] │
└─────────────────────────┘arrayStringConcat
Introducido en: v1.1.0
Concatena las representaciones en forma de cadena de los valores incluidos en el array usando el separador proporcionado, que es un parámetro opcional cuyo valor predeterminado es una cadena vacía.
Sintaxis
arrayStringConcat(arr[, separator])Alias: array_to_string
Argumentos
arr— El array que se va a concatenar.Array(T)separator— Opcional. Cadena separadora. De forma predeterminada, una cadena vacía.const String
Valor devuelto
Devuelve la cadena concatenada. String
Ejemplos
Ejemplo de uso
SELECT arrayStringConcat(['12/05/2021', '12:50:00'], ' ') AS DateString;┌─DateString──────────┐
│ 12/05/2021 12:50:00 │
└─────────────────────┘extractAllGroupsVertical
Introducido en: v20.5.0
Encuentra todos los grupos de una cadena mediante una expresión regular y devuelve un array de arrays, donde cada array contiene los fragmentos coincidentes de cada grupo, agrupados según el orden de aparición en la cadena de entrada.
Sintaxis
extractAllGroupsVertical(s, regexp)Alias: extractAllGroups
Argumentos
s— Cadena de entrada de la que extraer.StringoFixedStringregexp— Expresión regular con la que buscar coincidencias.const Stringoconst FixedString
Valor devuelto
Devuelve un array de arrays, donde cada array interno contiene los grupos capturados de una coincidencia. Cada coincidencia produce un array con elementos correspondientes a los grupos de captura de la expresión regular (grupo 1, grupo 2, etc.). Si no se encuentra ninguna coincidencia, devuelve un array vacío. Array(Array(String))
Ejemplos
Ejemplo de uso
WITH '< Server: nginx
< Date: Tue, 22 Jan 2019 00:26:14 GMT
< Content-Type: text/html; charset=UTF-8
< Connection: keep-alive
' AS s
SELECT extractAllGroupsVertical(s, '< ([\\w\\-]+): ([^\\r\\n]+)');[['Server','nginx'],['Date','Tue, 22 Jan 2019 00:26:14 GMT'],['Content-Type','text/html; charset=UTF-8'],['Connection','keep-alive']]naiveBayesNgrams
Introducido en: v26.7.0
Divide el texto en n-gramas usando la misma tokenización que un Diccionario Naive Bayes (el layout NAIVE_BAYES): modo byte, codepoint o token, con padding de límites opcional. Úselo para crear los datos de entrenamiento preagregados (ngram, class_id, count) que consume ese Diccionario, de modo que los n-gramas de entrenamiento coincidan exactamente con lo que naiveBayesClassifier produce durante la consulta.
Sintaxis
naiveBayesNgrams(text, n, mode[, start_token, end_token])Argumentos
text— Texto que se va a dividir en n-gramas.Stringn— Tamaño del n-grama, de 1 a 1024.const UIntmode— Modo de tokenización: 'byte', 'codepoint' o 'token'.const Stringstart_token— Opcional. Token delimitador antepuesto (n-1) veces al texto de entrada; un número para 'byte'/'codepoint' y un literal para 'token'. Vacío significa que no hay relleno.const Stringend_token— Opcional. Token delimitador añadido (n-1) veces al final del texto de entrada.const String
Valor devuelto
Los n-gramas del texto de entrada. Array(String)
Ejemplos
Bigramas de tokens
SELECT naiveBayesNgrams('the cat sat', 2, 'token');['the cat','cat sat']Bigramas de tokens con padding en los bordes
SELECT naiveBayesNgrams('cat', 2, 'token', '<s>', '</s>');['<s> cat','cat </s>']Bigramas de bytes con relleno en los extremos (resultado mostrado en hexadecimal)
SELECT arrayMap(x -> hex(x), naiveBayesNgrams('xy', 2, 'byte', '0x01', '0xFF'));['0178','7879','79FF']Bigramas de puntos de código con relleno en los límites (resultado mostrado en hexadecimal)
SELECT arrayMap(x -> hex(x), naiveBayesNgrams('ab', 2, 'codepoint', '0x10FFFE', '0x10FFFF'));['F48FBFBE61','6162','62F48FBFBF']ngrams
Disponible desde: v21.11.0
Divide una cadena UTF-8 en n-gramas de longitud N.
Sintaxis
ngrams(s, N)Argumentos
s— Cadena de entrada.StringoFixedStringN— La longitud del n-grama.const UInt8/16/32/64
Valor devuelto
Devuelve un array de n-gramas. Array(String)
Ejemplos
Ejemplo de uso
SELECT ngrams('ClickHouse', 3);['Cli','lic','ick','ckH','kHo','Hou','ous','use']reverseBySeparator
Introducido en: v26.2.0
Invierte el orden de las subcadenas de una cadena separadas por un separador especificado. Esta función divide la cadena por el separador, invierte el orden de las partes resultantes y las vuelve a unir usando el mismo separador. Resulta útil para analizar nombres de dominio, rutas de archivo u otros datos jerárquicos en los que necesites invertir el orden de los componentes.
Ejemplos:
- reverseBySeparator('www.google.com') devuelve 'com.google.www'
- reverseBySeparator('a/b/c', '/') devuelve 'c/b/a'
- reverseBySeparator('x::y::z', '::') devuelve 'z::y::x'
Sintaxis
reverseBySeparator(string[, separator])Argumentos
string— La cadena de entrada cuyo orden de partes se va a invertir.Stringseparator— La cadena separadora que se usa para identificar las partes. Si no se proporciona, se usa '.' (punto). Valor predeterminado: '.'String
Valor devuelto
Devuelve una cadena con las subcadenas de la cadena original ordenadas de derecha a izquierda, unidas por el mismo separador. String
Ejemplos
Inversión básica de dominios
SELECT reverseBySeparator('www.google.com')com.google.wwwRuta invertida
SELECT reverseBySeparator('a/b/c', '/')c/b/aSeparador personalizado
SELECT reverseBySeparator('x::y::z', '::')z::y::xCaso especial con puntos
SELECT reverseBySeparator('.a.b.', '.').b.a.Un solo elemento
SELECT reverseBySeparator('single')singleSeparador vacío
SELECT reverseBySeparator('abcde', '')edcbasplitByChar
Introducido en: v1.1.0
Divide una cadena en un Array de subcadenas usando como separador una cadena constante separator de exactamente un carácter.
Se pueden obtener subcadenas vacías si el separador aparece al principio o al final de la cadena, o si hay varios separadores consecutivos.
Se pueden obtener subcadenas vacías cuando:
- Un separador aparece al principio o al final de la cadena
- Hay varios separadores consecutivos
- La cadena original
sestá vacía
Sintaxis
splitByChar(separator, s[, max_substrings])Argumentos
separator— El separador debe ser un carácter de un solo byte.Strings— La cadena que se debe dividir.Stringmax_substrings— Opcional. Simax_substrings > 0, el array devuelto contendrá como máximomax_substringssubcadenas; de lo contrario, la función devolverá tantas subcadenas como sea posible. El valor predeterminado es0.Int64
Valor devuelto
Devuelve un array de las subcadenas seleccionadas. Array(String)
Ejemplos
Ejemplo de uso
SELECT splitByChar(',', '1,2,3,abcde');┌─splitByChar(',', '1,2,3,abcde')─┐
│ ['1','2','3','abcde'] │
└─────────────────────────────────┘splitByNonAlpha
Introducido en: v21.9.0
Divide en un array de subcadenas una cadena delimitada por caracteres de espacio en blanco y de puntuación.
Sintaxis
splitByNonAlpha(s[, max_substrings])Argumentos
s— La cadena que se va a dividir.Stringmax_substrings— Opcional. Cuandomax_substrings > 0, las subcadenas devueltas no serán más demax_substrings; de lo contrario, la función devolverá tantas subcadenas como sea posible. Valor predeterminado:0.Int64
Valor devuelto
Devuelve un Array de subcadenas seleccionadas de s. Array(String)
Ejemplos
Ejemplo de uso
SELECT splitByNonAlpha('user@domain.com');['user','domain','com']splitByRegexp
Introducido en: v21.6.0
Divide una cadena separada por la expresión regular proporcionada en un array de subcadenas. Si la expresión regular proporcionada está vacía, la cadena se dividirá en un array de caracteres individuales. Si no se encuentra ninguna coincidencia para la expresión regular, la cadena no se dividirá.
Pueden seleccionarse subcadenas vacías cuando:
- se produce una coincidencia no vacía de la expresión regular al principio o al final de la cadena
- hay varias coincidencias no vacías consecutivas de la expresión regular
- la cadena original está vacía mientras que la expresión regular no lo está.
Sintaxis
splitByRegexp(regexp, s[, max_substrings])Argumentos
regexp— Expresión regular. Constante.StringoFixedStrings— La cadena que se debe dividir.Stringmax_substrings— Opcional. Cuandomax_substrings > 0, el número de subcadenas devueltas no será mayor quemax_substrings; de lo contrario, la función devolverá tantas subcadenas como sea posible. Valor predeterminado:0.Int64
Valor devuelto
Devuelve un Array con las subcadenas seleccionadas de s. Array(String)
Ejemplos
Ejemplo de uso
SELECT splitByRegexp('\\d+', 'a12bc23de345f');┌─splitByRegexp('\\d+', 'a12bc23de345f')─┐
│ ['a','bc','de','f'] │
└────────────────────────────────────────┘Expresión regular vacía
SELECT splitByRegexp('', 'abcde');┌─splitByRegexp('', 'abcde')─┐
│ ['a','b','c','d','e'] │
└────────────────────────────┘splitByString
Introducido en: v1.1.0
Divide una cadena con un separator constante compuesto por varios caracteres en un array de subcadenas.
Si la cadena separator está vacía, dividirá la cadena s en un array de caracteres individuales.
Pueden seleccionarse subcadenas vacías cuando:
- Un separador no vacío aparece al principio o al final de la cadena
- Hay varios separadores no vacíos consecutivos
- La cadena original
sestá vacía mientras que el separador no lo está
Sintaxis
splitByString(separator, s[, max_substrings])Argumentos
separator— El separador.Strings— La cadena que se va a dividir.Stringmax_substrings— Opcional. Cuandomax_substrings > 0, el número de subcadenas devueltas no será mayor quemax_substrings; de lo contrario, la función devolverá tantas subcadenas como sea posible. Valor predeterminado:0.Int64
Valor devuelto
Devuelve un array con las subcadenas obtenidas de s Array(String)
Ejemplos
Ejemplo de uso
SELECT splitByString(', ', '1, 2 3, 4,5, abcde');┌─splitByString(', ', '1, 2 3, 4,5, abcde')─┐
│ ['1','2 3','4,5','abcde'] │
└───────────────────────────────────────────┘Separador vacío
SELECT splitByString('', 'abcde');┌─splitByString('', 'abcde')─┐
│ ['a','b','c','d','e'] │
└────────────────────────────┘splitByWhitespace
Introducido en: v21.9.0
Divide una cadena separada por caracteres de espacio en blanco en un array de subcadenas.
Sintaxis
splitByWhitespace(s[, max_substrings])Argumentos
s— La cadena que se va a dividir.Stringmax_substrings— Opcional. Cuandomax_substrings > 0, las subcadenas devueltas no serán más demax_substrings; de lo contrario, la función devolverá tantas subcadenas como sea posible. Valor predeterminado:0.Int64
Valor devuelto
Devuelve un array con las subcadenas seleccionadas de s. Array(String)
Ejemplos
Ejemplo de uso
SELECT splitByWhitespace(' 1! a, b. ');['1!','a,','b.']tokens
Introducido en: v21.11.0
Divide una cadena en tokens usando el tokenizador indicado.
Tokenizadores disponibles:
splitByNonAlphadivide cadenas por caracteres ASCII no alfanuméricos (consulte también la función splitByNonAlpha).splitByString(S)divide cadenas usando determinadas cadenas separadorasSdefinidas por el usuario (consulte también la función splitByString). Los separadores pueden especificarse mediante un parámetro opcional; por ejemplo,tokens(value, 'splitByString', [', ', '; ', '\n', '\\']). Tenga en cuenta que cada cadena puede constar de varios caracteres (', 'en el ejemplo). La lista de separadores predeterminada, si no se especifica explícitamente, es un único espacio en blanco[' '].splitByRegexp(re)divide cadenas usando un separador de expresión regularredefinido por el usuario (consulte también la función splitByRegexp). La expresión regular es obligatoria; por ejemplo,tokens(value, 'splitByRegexp', '[^\p{L}\p{N}#+]+'). A diferencia desplitByString, un separador de expresión regular puede conservar tokens que contienen caracteres especiales (comoC++oC#).asciiCJKdivide cadenas en tokens usando reglas de límite de palabra de Unicode (similares a UAX #29). Los caracteres ASCII alfanuméricos y los guiones bajos forman tokens con conectores (:para letras,.y'para caracteres del mismo tipo). Los caracteres Unicode no ASCII pasan a ser tokens de un solo carácter.chinesesegmenta texto chino en palabras mediante un diccionario y un modelo oculto de Markov (el algoritmo sigue jieba; los datos del diccionario y del modelo integrados se derivan de cppjieba). A diferencia deasciiCJK, que trata cada carácter no ASCII como un token de un solo carácter,chineseagrupa caracteres chinos consecutivos en palabras, lo que genera tokens más significativos y una mayor calidad de búsqueda para texto chino. Un argumento opcionalgranularitypuede sercoarse_grained(el valor predeterminado) ofine_grained; este último también enumera subpalabras superpuestas, lo que mejora la recuperación a costa de un índice más grande.icu(locale)divide cadenas en tokens de palabras mediante la segmentación de palabras Unicode (UAX #29) de la biblioteca ICU. Para sistemas de escritura sin espacios entre palabras (por ejemplo, chino, japonés y tailandés), ICU aplica una segmentación basada en diccionarios, por lo que el texto se divide en palabras significativas.localees la configuración regional de ICU que se pasa al segmentador (la segmentación se basa principalmente en el sistema de escritura y los diccionarios; la configuración regional selecciona la adaptación específica de ICU); es obligatoria y se pasa como argumento independiente; por ejemplo,tokens(value, 'icu', 'ja').japanesedivide texto japonés en palabras mediante el analizador morfológico MeCab. Requiere un diccionario configurado en la configuración del servidor (consulte la documentación sobre el índice de texto).ngrams(N)divide cadenas en n-gramas de tamaño uniformeN(consulte también la función ngrams). La longitud del n-grama puede especificarse mediante un parámetro entero opcional entre 1 y 8; por ejemplo,tokens(value, 'ngrams', 3). El tamaño predeterminado del n-grama, si no se especifica explícitamente, es 3.sparseGrams(min_length, max_length, min_cutoff_length)divide cadenas en n-gramas de longitud variable de al menosmin_lengthy como máximomax_lengthcaracteres (inclusive) (consulte también la función sparseGrams). A menos que se especifique explícitamente,min_lengthymax_lengthtoman los valores predeterminados 3 y 100. Si se proporciona el parámetromin_cutoff_length, solo se devuelven n-gramas con una longitud mayor o igual quemin_cutoff_length. En comparación conngrams(N), el tokenizadorsparseGramsproduce n-gramas de longitud variable, lo que permite una representación más flexible del texto original. Por ejemplo,tokens(value, 'sparseGrams', 3, 5, 4)genera internamente 3-, 4- y 5-gramas a partir de la cadena de entrada, pero solo se devuelven los 4- y 5-gramas.arrayno realiza tokenización; es decir, cada valor de fila es un token (consulte también la función array). Por compatibilidad con otros sistemas,keywordestá disponible como alias dearray.
En el caso del tokenizador splitByString, si los tokens no forman un código de prefijo, probablemente querrá que la coincidencia priorice los separadores más largos.
Para ello, pase los separadores en orden descendente de longitud.
Por ejemplo, con separators = ['%21', '%'], la cadena %21abc se tokenizaría como ['abc'], mientras que con separators = ['%', '%21'] se tokenizaría como ['21ac'] (lo que probablemente no era lo que quería).
Sintaxis
tokens(value) -- 'splitByNonAlpha' tokenizer
tokens(value, 'splitByNonAlpha')
tokens(value, 'splitByString'[, separators])
tokens(value, 'splitByRegexp', regexp)
tokens(value, 'asciiCJK')
tokens(value, 'chinese'[, granularity])
tokens(value, 'icu', locale)
tokens(value, 'japanese')
tokens(value, 'ngrams'[, n])
tokens(value, 'sparseGrams'[, min_length, max_length[, min_cutoff_length]])
tokens(value, 'array')Argumentos
value— La cadena de entrada.StringoFixedStringtokenizer— El tokenizador que se va a usar. Los argumentos válidos sonsplitByNonAlpha,splitByString,splitByRegexp,asciiCJK,chinese,icu,japanese,ngrams,sparseGramsyarray. Es opcional; si no se establece explícitamente, el valor predeterminado essplitByNonAlpha.const Stringlocale— Solo es relevante si el argumentotokenizeresicu: la configuración regional obligatoria, por ejemplo,'ja'.const Stringn— Solo es relevante si el argumentotokenizeresngrams: un parámetro opcional que define la longitud de los ngrams. Si no se establece explícitamente, el valor predeterminado es3.const UInt8separators— Solo es relevante si el argumentotokenizeressplit: un parámetro opcional que define las cadenas separadoras. Si no se establece explícitamente, el valor predeterminado es[' '].const Array(String)regexp— Solo es relevante si el argumentotokenizeressplitByRegexp: un parámetro obligatorio que define el separador de expresión regular.const Stringmin_length— Solo es relevante si el argumentotokenizeressparseGrams: un parámetro opcional que define la longitud mínima de los gramas; el valor predeterminado es 3.const UInt8max_length— Solo es relevante si el argumentotokenizeressparseGrams: un parámetro opcional que define la longitud máxima de los gramas; el valor predeterminado es 100.const UInt8min_cutoff_length— Solo es relevante si el argumentotokenizeressparseGrams: un parámetro opcional que define la longitud mínima de corte.const UInt8granularity— Solo es relevante si el argumentotokenizereschinese: un parámetro opcional,coarse_grained(predeterminado) ofine_grained, que controla la granularidad de la segmentación.const String
Valor devuelto
Devuelve el array de tokens resultante de la cadena de entrada. Array
Ejemplos
Tokenizador predeterminado
SELECT tokens('test1,;\\\\ test2,;\\\\ test3,;\\\\ test4') AS tokens;['test1','test2','test3','test4']Tokenizador de ngramas
SELECT tokens('abc def', 'ngrams', 3) AS tokens;['abc','bc ','c d',' de','def']tokensForLikePattern
Introducido en: v26.3.0
Divide una cadena de patrón LIKE en tokens mediante el tokenizador especificado.
A diferencia de la función tokens, esta función tiene en cuenta la semántica de los patrones LIKE
(como los caracteres comodín al principio y al final) y aplica reglas específicas del tokenizador
para extraer tokens significativos para la coincidencia de patrones.
Admite los mismos conjuntos de argumentos que la función tokens, con algunas
excepciones: los tokenizadores chinese e icu no son compatibles aquí.
La tokenización de patrones LIKE solo es significativa para los tokenizadores que
optan explícitamente por la semántica LIKE (supportsStringLike()). Llamar a
tokensForLikePattern con un tokenizador no compatible genera BAD_ARGUMENTS;
utilice tokens sin más.
Los argumentos adicionales después de tokenizer se interpretan según el
tokenizador seleccionado (por ejemplo, n para ngrams, separators para
splitByString y min_length / max_length [/ min_cutoff_length]
para sparseGrams).
Esta función está pensada principalmente para tareas de depuración y pruebas, y se utiliza internamente para analizar el comportamiento de la tokenización en patrones LIKE.
Sintaxis
tokensForLikePattern(value[, tokenizer[, tokenizer_specific_arguments...]])Argumentos
value— La cadena de entrada.StringoFixedStringtokenizer— El tokenizador que se utilizará. Los argumentos válidos sonsplitByNonAlpha,splitByString,asciiCJK,ngrams,sparseGramsyarray. Es opcional; si no se establece explícitamente, el valor predeterminado essplitByNonAlpha.const Stringlocale— Solo es relevante si el argumentotokenizeresicu: la configuración regional obligatoria, por ejemplo,'ja'.const Stringn— Solo es relevante si el argumentotokenizeresngrams: un parámetro opcional que define la longitud de los ngrams. Si no se establece explícitamente, el valor predeterminado es3.const UInt8separators— Solo es relevante si el argumentotokenizeressplit: un parámetro opcional que define las cadenas separadoras. Si no se establece explícitamente, el valor predeterminado es[' '].const Array(String)regexp— Solo es relevante si el argumentotokenizeressplitByRegexp: un parámetro obligatorio que define el separador de expresión regular.const Stringmin_length— Solo es relevante si el argumentotokenizeressparseGrams: un parámetro opcional que define la longitud mínima del grama; el valor predeterminado es 3.const UInt8max_length— Solo es relevante si el argumentotokenizeressparseGrams: un parámetro opcional que define la longitud máxima del grama; el valor predeterminado es 100.const UInt8min_cutoff_length— Solo es relevante si el argumentotokenizeressparseGrams: un parámetro opcional que define la longitud mínima de corte.const UInt8granularity— Solo es relevante si el argumentotokenizereschinese: un parámetro opcional, ya seacoarse_grained(predeterminado) ofine_grained, que controla la granularidad de la segmentación.const String
Valor devuelto
Devuelve el array de tokens resultante de la cadena de entrada. Array
Ejemplos
Tokenizador predeterminado
SELECT tokensForLikePattern('%test1,test2,test3%') AS tokens;['test2']