Função regexp_substr

Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime 11.3 LTS e superior

Retorna a primeira substring que str corresponde a regexp.

Sintaxe

regexp_substr( str, regexp )

Argumentos

  • str: Uma STRING expressão a ser correspondida.
  • regexp: Uma STRING expressão com um padrão correspondente.

Devoluções

Um STRING.

regexp_substr devolve toda a subcadeia que regexp corresponde, não um grupo individual de captura. Para devolver um grupo de captura específico, use regexp_extract. Apenas o primeiro jogo é considerado. Para devolver todos os jogos, usa regexp_extract_all.

A regexp cadeia deve ser uma expressão regular. Ver Expressões regulares para a sintaxe suportada.

Ao usar literais, use raw-literal (r prefixo) para evitar o pré-processamento de caracteres de escape.

Se str ou regexp for NULL, ou o padrão não for encontrado, o resultado é NULL.

Condições de erro comuns

Exemplos

Escolha uma das várias alternativas

O padrão Ste(v\|ph)en corresponde a ou StephenSteven a . A função devolve a primeira correspondência.

> SELECT regexp_substr('Steven Jones and Stephen Smith are the best players', r'Ste(v|ph)en');
 Steven

Extrair o primeiro número de uma sequência

Usa um literal bruto para que isso \d seja passado para o motor regex sem duplicar a barra diagonal.

> SELECT regexp_substr('item 42 costs $19', r'\d+');
 42

Combinar de forma insensível ao caso

Usa a (?i) bandeira inline para ignorar o caso.

> SELECT regexp_substr('Error: disk full', r'(?i)error');
 Error

Extrair um endereço de email

> SELECT regexp_substr('Contact alice@example.com for details', r'\w+@\w+\.\w+');
 alice@example.com

Extrair a primeira hashtag

regexp_substr devolve apenas o primeiro jogo. Para devolver todos os jogos, usa regexp_extract_all.

> SELECT regexp_substr('Posts tagged #data #ai #sql', r'#\w+');
 #data

Não há retornos de jogos NULL

Ao contrário de regexp_extract, que devolve uma cadeia vazia, retorna regexp_substrNULL quando o padrão não é encontrado.

> SELECT regexp_substr('Mary had a little lamb', r'Ste(v|ph)en');
 NULL

NULL Retornos de entrada NULL

> SELECT regexp_substr(NULL, r'Ste(v|ph)en');
 NULL

> SELECT regexp_substr('Mary had a little lamb', NULL);
 NULL

Padrão regex inválido

> SELECT regexp_substr('abc', '[invalid');
  Error: INVALID_PARAMETER_VALUE.PATTERN