Função regexp_substr

Aplica-se a:verificação marcada como sim SQL do Databricks caixa de seleção marcada Databricks Runtime 11.3 LTS e versões posteriores

Retorna a primeira substring em str que combine regexp.

Sintaxe

regexp_substr( str, regexp )

Argumentos

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

Retornos

Um STRING.

regexp_substr retorna toda a subcadeia de caracteres que regexp corresponde, não um grupo de captura individual. Para retornar um grupo de captura específico, use regexp_extract. Somente a primeira correspondência é considerada. Para retornar todas as correspondências, use regexp_extract_all.

A regexp cadeia de caracteres deve ser uma expressão regular. Consulte expressões regulares para a sintaxe com suporte.

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

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

Condições de erro comuns

Exemplos

Corresponder a uma das várias alternativas

O padrão Ste(v\|ph)en corresponde a um Steven ou Stephen. A função retorna 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 cadeia de caracteres

Use um literal bruto para que \d seja passado para o mecanismo regex sem dobrar a barra invertida.

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

Corresponder sem diferenciar maiúsculas de minúsculas

Use o (?i) sinalizador embutido para ignorar maiúsculas e minúsculas.

> 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 retorna apenas a primeira correspondência. Para retornar todas as correspondências, use regexp_extract_all.

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

Nenhuma correspondência retorna NULL

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

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

NULL retorno 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