4.4 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | 3e185d24c9 |
42 | Para reemplazar en cadenas |
Funciones para buscar y reemplazar en cadenas
replaceOne(pajar, patrón, reemplazo)
Sustituye la primera aparición, si existe, de la ‘pattern’ subcadena en ‘haystack’ con el ‘replacement’ subcadena. Sucesivo, ‘pattern’ y ‘replacement’ deben ser constantes.
replaceAll (pajar, patrón, reemplazo), replace (pajar, patrón, reemplazo)
Sustituye todas las apariciones del ‘pattern’ subcadena en ‘haystack’ con el ‘replacement’ subcadena.
replaceRegexpOne (pajar, patrón, reemplazo)
Reemplazo usando el ‘pattern’ expresión regular. Una expresión regular re2.
Sustituye sólo la primera ocurrencia, si existe.
Un patrón se puede especificar como ‘replacement’. Este patrón puede incluir sustituciones \0-\9
.
Sustitución \0
incluye toda la expresión regular. Sustitución \1-\9
corresponden a los números de subpatrón. \
en una plantilla, escapar de ella usando \
.
También tenga en cuenta que un literal de cadena requiere un escape adicional.
Ejemplo 1. Conversión de la fecha a formato americano:
SELECT DISTINCT
EventDate,
replaceRegexpOne(toString(EventDate), '(\\d{4})-(\\d{2})-(\\d{2})', '\\2/\\3/\\1') AS res
FROM test.hits
LIMIT 7
FORMAT TabSeparated
2014-03-17 03/17/2014
2014-03-18 03/18/2014
2014-03-19 03/19/2014
2014-03-20 03/20/2014
2014-03-21 03/21/2014
2014-03-22 03/22/2014
2014-03-23 03/23/2014
Ejemplo 2. Copiar una cadena diez veces:
SELECT replaceRegexpOne('Hello, World!', '.*', '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0') AS res
┌─res────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World! │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
replaceRegexpAll (pajar, patrón, reemplazo)
Esto hace lo mismo, pero reemplaza todas las ocurrencias. Ejemplo:
SELECT replaceRegexpAll('Hello, World!', '.', '\\0\\0') AS res
┌─res────────────────────────┐
│ HHeelllloo,, WWoorrlldd!! │
└────────────────────────────┘
Como excepción, si una expresión regular funcionó en una subcadena vacía, el reemplazo no se realiza más de una vez. Ejemplo:
SELECT replaceRegexpAll('Hello, World!', '^', 'here: ') AS res
┌─res─────────────────┐
│ here: Hello, World! │
└─────────────────────┘
Sistema abierto.)
La función agrega una barra invertida antes de algunos caracteres predefinidos en la cadena. Caracteres predefinidos: ‘0’, ‘\’, ‘|’, ‘(’, ‘)’, ‘^’, ‘$’, ‘.’, ‘[’, ']', ‘?’, '*‘,’+‘,’{‘,’:‘,’-'. Esta implementación difiere ligeramente de re2::RE2::QuoteMeta. Escapa de byte cero como \0 en lugar de 00 y escapa solo de los caracteres requeridos. Para obtener más información, consulte el enlace: RE2