Oracle REGEXP_LIKE Examples
Regular expressions are patterns used to match character combinations in strings. O Oracle 10g introduziu suporte para expressões regulares usando diferentes funções. Este post se concentra na função REGEXP_LIKE Oracle, e explica como usá-lo.
Descrição
o Oracle REGEXP_LIKE é usado para realizar uma correspondência de expressões regulares (em vez de uma correspondência de padrões simples realizada por LIKE).
sintaxe
REGEXP_LIKE ( string expression, pattern )
- expressão de cadeia – a expressão de cadeia.
- padrão-o padrão de correspondência de Expressões Regulares
- parâmetro de correspondência-permite-lhe alterar o comportamento de correspondência por omissão da função Regexp_like do Oracle (por exemplo, mude a procura de maiúsculas para minúsculas).
Basic Oracle REGEXP_LIES Examples
we’ll start by creating a table called Names, based on its values, the following Oracle REGEXP_LIKE examplies will perform different regular expression searchs.
CREATE TABLE namesASSELECT last_name AS NAMEFROM hr.employeesORDER BY salary ;
o seguinte exemplo do Oracle REGEXP_LIKE iria obter todos os nomes que contêm a letra ‘z’. Esta instrução Oracle SELECT realmente não coloca nenhum limite inferior ou superior no número de letras antes ou depois da letra ” z “(qualquer número de caracteres é permitido), mas requer que a palavra contenha a letra “z”.
SELECT *FROM namesWHERE regexp_like (name , 'z') ;NAME-------------------------LorentzGietzOzer
o próximo exemplo de Regexp_like Oracle recuperaria todos os nomes que contêm a sequência de letras ‘be’. Mais uma vez, esta instrução Oracle SELECT realmente não coloca nenhum limite inferior ou superior no número de letras antes ou depois da sequência de letras ‘be’ (qualquer número de caracteres é permitido), mas requer que a palavra contenha a sequência de letras ‘be’.
SELECT *FROM namesWHERE regexp_like (name , 'be') ;NAME---------------------------AbelGreenberg
usando o operador do tubo (/)
o operador do tubo ( / ) é usado para especificar combinações alternativas. No próximo exemplo Oracle REGEXP_LIKE usaríamos o operador do tubo ( | ) a fim de recuperar todos os nomes que contêm a sequência de letras ‘be’ ou ‘ae’. Esta instrução Oracle SELECT realmente não coloca nenhum limite inferior ou superior no número de letras antes ou depois da sequência de letras ‘be’ ou ‘ae'(qualquer número de caracteres é permitido), mas requer a palavra para conter estas sequências.
SELECT *FROM namesWHERE regexp_like (name , 'be|ae') ;NAME-------------------------BaerAbelRaphaelyGreenberg
especificando a letra ‘c’ (como o terceiro argumento da função REGEXP_LIKE), podemos fazer uma pesquisa sensível a maiúsculas e minúsculas (padrão no Oracle).
SELECT *FROM namesWHERE regexp_like (name , 'be|ae' , 'c' ) ;NAME-------------------------BaerAbelRaphaelyGreenberg
e especificando a letra ‘i’ (como o terceiro argumento da função REGEXP_LIKE) podemos fazer uma pesquisa insensível a maiúsculas.
SELECT *FROM namesWHERE regexp_like (name , 'be|ae' , 'i' ) ;NAME-------------------------BellBernsteinBaerAbelRaphaelyGreenberg
Usando o acento Circunflexo(^) operador
podemos usar o acento circunflexo (^) operador para indicar o início de uma linha de caracteres, neste REGEXP_LIKE exemplo, vamos recuperar todos os nomes que comecem com a letra da sequência de ‘ser’ ou ‘ba’ (não diferencia maiúsculas de minúsculas de pesquisa)
SELECT *FROM namesWHERE regexp_like (name , '^be|^ba' , 'i' ) ;NAME-------------------------BaidaBellBandaBatesBernsteinBaer
Usando o Cifrão ($) operador
podemos usar o cifrão ($) operador para indicar um fim-de-linha personagem, neste REGEXP_LIKE exemplo, vamos recuperar todos os nomes que terminem com a letra da sequência de ‘es’ ou ‘er’ (não diferencia maiúsculas de minúsculas de pesquisa).
SELECT *FROM namesWHERE regexp_like (name , 'es$|er$' , 'i' ) ;NAME-------------------------PhiltankerColmenaresJonesGatesDaviesNayerStilesDellingerBatesBaer
Usando Colchetes
podemos usar os Colchetes para especificar uma lista correspondente, que deve corresponder a qualquer uma das expressões nela representado. O próximo exemplo de Regexp_like Oracle recuperaria todos os nomes que contivessem as letras ‘ j ‘ou’z’.
SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------RajsLorentzGietzOzerErrazuriz
Este REGEXP_LIKE exemplo seria recuperar todos os nomes que contenham as letras ‘b’ ou ‘z’ ou ‘E’ (sensível a maiúsculas e minúsculas pesquisa)
SELECT * FROM names WHERE regexp_like (name , '') ;NAME-------------------------TobiasCabrioEverettLorentzPataballaErnstCambraultGietzMcEwenCambrault
em seguida, vamos alterar a nossa última consulta e torná-lo sensível a maiúsculas e minúsculas pesquisa :
SELECT *FROM namesWHERE regexp_like (name , '' , 'i') ;NAME-------------------------PhiltankerZacharyMarkleGeePerkinsColmenaresPatelOConnellMikkilineniTobiasSeo
Este Oráculo REGEXP_LIKE exemplo seria recuperar todos os nomes que contenham as letras ‘a’, ‘b’ ou ‘c’ :
SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------PhiltankerMarkleLandryColmenaresPatelVargasSullivanMarlowGrantMatos
E, em vez de especificar as letras ‘a’, ‘b’ e ‘c’, separadamente, podemos especificar um intervalo :
SELECT *FROM namesWHERE regexp_like (name , '') ;NAME-------------------------PhiltankerMarkleLandryColmenaresPatelVargasSullivanMarlowGrantMatos
A próxima Oracle REGEP_LIKE exemplo seria recuperar todos os nomes que contenham uma letra no intervalo de ‘d’ e ‘g’, seguido pela letra ‘a’.
SELECT *FROM namesWHERE regexp_like (name , 'a') ;NAME-------------------------VargasBaidaFleaurBanda
usando o período (.) Operador
o período (.) operator matches any character except NULL, the next Oracle REGEXP_LIKE example would retrieve all names that contain a letter in the range of ‘b’ and ‘g’, followed by any character, followed by the letter ‘a’.
SELECT *FROM namesWHERE regexp_like (name , '.') ;NAME-------------------------ColmenaresTobiasMcCainSarchandSewallCambraultSciarraCambrault
podemos usar o Período de Operador para representar mais de um caractere, o próximo Oracle REGEXP_LIKE exemplo seria recuperar todos os nomes que contenham uma letra no intervalo de ‘b’ e ‘g’, seguido de dois caracteres, seguido pela letra ‘a’.
SELECT *FROM namesWHERE regexp_like (name , '..') ;NAME-------------------------De HaanKochhar
usando os parêntesis encaracolados
os parêntesis encaracolados são usados para indicar um número exacto de ocorrências, por exemplo, mostrar todos os nomes que contêm letras ‘o’ duplas.
SELECT *FROM namesWHERE regexp_like (name , '{2}') ;NAME-------------------------KhooBloom