Función REGEXP_INSTR - AWS Clean Rooms

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Función REGEXP_INSTR

Busca una cadena para un patrón de expresión regular y devuelve un valor entero que indica la posición de inicio o de finalización de la subcadena coincidente. Si no se encuentra coincidencia, la función devuelve 0. REGEXP_INSTR es similar a la función POSITION, pero le permite buscar un patrón de expresión regular en una cadena.

Sintaxis

REGEXP_INSTR ( source_string, pattern [, position [, occurrence] [, option [, parameters ] ] ] ] )

Argumentos

source_string

Una expresión de cadena, como un nombre de columna, que se buscará.

pattern

Un literal de cadena que representa un patrón de expresión regular.

position

Valor entero positivo que indica la posición dentro de source_string (cadena_de_origen) para comenzar la búsqueda. La posición se basa en la cantidad de caracteres, no bytes, por lo que los caracteres multibyte se cuentan como caracteres simples. El valor predeterminado de es 1. Si el valor de position (posición) es menor que 1, la búsqueda comienza en el primer carácter de source-string (cadena_de_origen). Si el valor de position (posición) es mayor que el número de caracteres de source-string (cadena_de_origen), el resultado es 0.

occurrence

Un número entero positivo que indica qué coincidencia del patrón se va a utilizar. REGEXP_INSTR omite las primeras coincidencias especificadas por el valor de occurrence menos uno. El valor predeterminado de es 1. Si occurrence es menor que 1 o mayor que el número de caracteres de source_string, la búsqueda se omite y el resultado es 0.

option

Valor que indica si se va a devolver la posición del primer carácter de la coincidencia (0) o la posición del primer carácter situado a continuación del final de la coincidencia (1). Un valor distinto de cero es lo mismo que 1. El valor predeterminado es 0.

parameters

Uno o varios literales de cadena que indican el grado de coincidencia de la función con el patrón. Los valores posibles son los siguientes:

  • c: aplica la coincidencia que distingue entre mayúsculas y minúsculas. El comportamiento predeterminado es utilizar la coincidencia que distingue entre mayúsculas y minúsculas.

  • i: aplica la coincidencia que no distingue entre mayúsculas y minúsculas.

  • e: extrae una subcadena mediante una subexpresión.

    Si pattern incluye una subexpresión, REGEXP_INSTR realiza la comparación con una subcadena utilizando la primera subexpresión de pattern. REGEXP_INSTR solo tiene en cuenta la primera subexpresión; las subexpresiones adicionales se omiten. Si el patrón no incluye una subexpresión, REGEXP_INSTR omite el parámetro 'e'.

  • p: interpreta el patrón con el dialecto de expresión regular compatible con Perl (PCRE).

Tipo de retorno

Entero

Ejemplo

En el siguiente ejemplo, se busca el carácter @ que comience un nombre de dominio y se devuelve la posición inicial de la primera coincidencia.

SELECT email, regexp_instr(email, '@[^.]*') FROM users ORDER BY userid LIMIT 4; email | regexp_instr -----------------------------------------------+-------------- Etiam.laoreet.libero@example.com | 21 Suspendisse.tristique@nonnisiAenean.edu | 22 amet.faucibus.ut@condimentumegetvolutpat.ca | 17 sed@lacusUtnec.ca | 4

En el siguiente ejemplo, se buscan variantes de la palabra Center y se devuelve la posición inicial de la primera coincidencia.

SELECT venuename, regexp_instr(venuename,'[cC]ent(er|re)$') FROM venue WHERE regexp_instr(venuename,'[cC]ent(er|re)$') > 0 ORDER BY venueid LIMIT 4; venuename | regexp_instr -----------------------+-------------- The Home Depot Center | 16 Izod Center | 6 Wachovia Center | 10 Air Canada Centre | 12

En el siguiente ejemplo, se encuentra la posición inicial de la primera vez que aparece la cadena FOX, con una lógica que no distingue entre mayúsculas y minúsculas.

SELECT regexp_instr('the fox', 'FOX', 1, 1, 0, 'i'); regexp_instr -------------- 5

En el siguiente ejemplo, se utiliza un patrón escrito en el dialecto de PCRE para localizar palabras que contengan al menos un número y una letra en minúsculas. Se utiliza el operador ?=, que tiene una connotación específica de anticipación en PCRE. En este ejemplo, se encuentra la posición inicial de la segunda palabra que reúne esas características.

SELECT regexp_instr('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 0, 'p'); regexp_instr -------------- 21

En el siguiente ejemplo, se utiliza un patrón escrito en el dialecto de PCRE para localizar palabras que contengan al menos un número y una letra en minúsculas. Se utiliza el operador ?=, que tiene una connotación específica de anticipación en PCRE. En este ejemplo, se encuentra la posición inicial de la segunda palabra que reúne esas características, pero difiere del ejemplo anterior, ya que se utiliza una coincidencia sin distinción entre mayúsculas y minúsculas.

SELECT regexp_instr('passwd7 plain A1234 a1234', '(?=[^ ]*[a-z])(?=[^ ]*[0-9])[^ ]+', 1, 2, 0, 'ip'); regexp_instr -------------- 15