Oracle regexp_like

Oracle regexp_like
Strings são um bloco de construção significativo quando se trata de bancos de dados. Como resultado, é mais provável que seu banco de dados seja composto por dados de string do que outros tipos de dados. É, portanto, benéfico ter ferramentas e recursos para ajudá-lo a trabalhar com dados semelhantes a string e string.

Neste tutorial, discutiremos o uso da função regexp_like () nos bancos de dados Oracle. Esta função nos permite executar um padrão de expressão regular correspondente em um determinado conjunto de valores.

Função oracle regexp_like

A função regexp_like é semelhante ao operador condicional semelhante. No entanto, diferentemente do operador semelhante, essa função executa uma correspondência de padrão regex em vez de uma única correspondência de padrão.

Isso o torna mais avançado e confiável em comparação com o operador semelhante. Isso ocorre porque a expressão regular nos permite especificar um padrão mais preciso e personalizável. Isso pode ajudar rapidamente a restringir os resultados da pesquisa em um determinado conjunto.

A sintaxe da função está como descrito abaixo:

Regexp_like (fonte_string, search_pattern, [match_parameter]);

A função aceita os argumentos como mostrado abaixo:

  1. fonte_string - o parâmetro fonte_string define a string que precisa ser pesquisada. Esta pode ser uma sequência literal ou uma coluna de tipo de dados suportado. Os tipos de dados suportados incluem char, varchar2, nchar, nvarchar2, clob, etc.
  2. Search_pattern -Este parâmetro é usado para especificar o padrão de expressão regular a ser correspondido à sequência de entrada.

A seguir estão a sintaxe e combinações de expressão regular aceita:

Operador Descrição
^ Corresponde ao início de uma string, conforme definido no Match_parameter.
$ Indica o fim de uma string conforme definido no Match_parameter.
* Combinar zero ou mais ocorrências
+ Combinar uma ou mais ocorrências
? Combinar zero ou uma ocorrência
^b Combina com o personagem de início da linha
$ b Corresponde ao personagem de final de linha.
. c Combine qualquer personagem no conjunto de personagens suportado, exceto nulo
[] d Especifica uma lista de itens e deseja corresponder a pelo menos um item na lista
() Permite que o padrão seja tratado como uma única subexpressão.
m Corresponde exatamente às vezes.
m, Corresponde a pelo menos m vezes.
m, n Corresponde a pelo menos m vezes, mas não mais que n vezes.
\ ne A expressão de referência de back -referência (onde n é um número inteiro entre 1 e 9) corresponde à enésima subexpressão.
[…] F Especifica o elemento de agrupamento
[::] g Especifica as classes de caracteres
[==] H Especifica classes equivalentes.

Para descobrir mais sobre a sintaxe de expressão regular multilíngue e o uso nos bancos de dados Oracle, considere o link fornecido abaixo:

https: // docs.oráculo.com/cd/b12037_01/servidor.101/b10759/ap_posix001.HTM#I690819

  • Match_parameter - isso descreve uma string usada para alterar o comportamento de correspondência padrão da função. O match_parameter é semelhante ao da função regexp_substr ().

A seguir mostra os valores aceitos para o match_parameter.

  1. 'C' - executa uma pesquisa sensível ao caso.
  2. 'I' - diz a função de executar uma pesquisa insensível ao caso.
  3. 'n' - permite que o personagem do período corresponda ao novo personagem da linha. Por padrão, é tratado como um personagem curinga.
  4. 'M' - permite que a expressão tenha várias linhas em que o caráter careteiro (^) indica o início e o sinal do dólar ($) indica o fim da linha. Por padrão, a expressão é considerada uma única linha.
  5. 'X' -permite a função de ignorar os caracteres de espaço em branco.

Se o match_parameter não for fornecido, o Oracle assumirá:

  1. O personagem do período não é igual a um personagem de nova linha.
  2. O fonte_string é uma entrada de linha única.
  3. A sensibilidade do caso padrão é definida no parâmetro NLS_SORT.

Depois que a função executar a operação desejada, ela deve devolver a linha correspondendo ao padrão especificado.

Exemplo de uso

A seção a seguir fornece exemplos demonstrando o uso da função regexp_like.

Suponha que tenhamos uma tabela contendo informações de funcionários, como mostrado:

Exemplo 1 - Uso básico

O exemplo a seguir mostra como usar a função para procurar um nome correspondente na tabela dos funcionários.

Selecione
primeiro nome, ultimo nome
De funcionários
Onde regexp_like (primeiro_name, 'p');

Nesse caso, a consulta acima deve retornar todos os nomes correspondentes em que o primeiro nome inclui 'P.'

Um exemplo de saída é como mostrado:

Exemplo 2 - Combine o início da linha

No exemplo abaixo, demonstramos como usar o Match_parameter para pesquisar no início da linha denotada pelo caráter caret.

Selecione
primeiro nome, ultimo nome
De funcionários
Onde regexp_like (primeiro_name, '^h', 'i');

A tabela resultante:

Exemplo 3 - Combine o final da linha

Da mesma forma, podemos corresponder ao padrão no final da linha usando o 'i' como o valor do match_parameter e o sinal do dólar para denotar o fim da linha.

Selecione
primeiro nome, ultimo nome
De funcionários
Onde regexp_like (last_name, 'r $', 'i');

Nesse caso, a consulta acima deve retornar os valores correspondentes, como mostrado:

Observe que todos os valores da coluna Last_Name terminam com um 'r'.'

Exemplo 4 - Execute uma pesquisa sensível ao caso

No exemplo abaixo, definimos o valor do match_parameter como 'c' para ativar a correspondência sensível ao caso.

Selecione
primeiro nome, ultimo nome
De funcionários
Onde regexp_like (primeiro_name, 'Julia', 'c');

No exemplo acima, como estamos usando a sensibilidade ao caso com um padrão de pesquisa em minúsculas, a consulta não corresponde a nenhum valor, pois todos os valores da tabela são camelos.

Exemplo 5 - Execute uma pesquisa insensível ao caso

Para circunavegar o cenário acima, podemos executar uma correspondência insensível ao caso, definindo o valor do match_parameter como 'i'.

Exemplo:

Selecione
primeiro nome, ultimo nome
De funcionários
Onde regexp_like (primeiro_name, 'Julia', 'i');

Saída:

Nesse caso, podemos ver a consulta corresponde a dois valores.

Exemplo 6 - Combine o personagem anterior várias vezes.

Também permitimos que a consulta corresponda a um personagem específico anterior um número definido de vezes. Um exemplo é como mostrado:

Selecione First_Name, Last_Name
De funcionários
Onde regexp_like (last_name, 'e 2', 'i');

Na consulta de exemplo acima, pesquisamos todas as linhas correspondentes, onde o valor contém dois caracteres 'E' na coluna Last_Name.

Os valores resultantes são como mostrados:

Como você pode ver, todos os valores na coluna Last_Name contém dois caracteres 'e'.

Conclusão

Neste post, discutimos como usar a função regexp_like nos bancos de dados Oracle para procurar um padrão de expressão regular.