Pular para o conteúdo

Utilizando Expressões Regulares no Oracle (regexp): Como Validar Dados com Regexp_Like

Criar tabelas utilizando regexp

Uma pequena palavra sobre espressões regulares

Expressões regulares é um assunto novo em Oracle, mas bastante utilizado em linux. Como um amigo me disse, uma boa definição para expressão regular é: “expressões regulares estão para as letras como as operações matemáticas estão para os números”. Essa frase define bem o que a expressão regular representa e a abrangência do assunto.

Regexp em Oracle

Encontrei vários assuntos sobre regexp e uma boa documentação que nos auxilia na compreensão deste assunto. Portanto vou demonstrar na prática algumas aplicações que podemos usar no Oracle.

Validar campo utilizando regexp_like

Neste exemplo, vou criar uma tabela qualquer e demonstrar como é possível controlar a entrada de dados utilizando regexp_like.

Para melhorar a compreensão, vou utilizar um campo varchar2 com o objetivo de preencher o número do cpf. Para tanto precisamos controlar a entrada para que contenha somente onze números.

Criando a tabela:

SQL
CREATE TABLE T1 (
   C1 VARCHAR2(11) NOT NULL
     CONSTRAINT C1_NUMBER_FORMAT
       CHECK(REGEXP_LIKE(C1, '\d{11}'))
 );

Parâmetros utilizados:

SQL
C1 ..: coluna da tabela
 \d ..: indica somente números
 {11} : quantidade exata de caracteres

Utilizando estes parâmetros, forçamos a utilização de números e na quantidade exata de onze, não menos.

Teste:

SQL
-- dados válidos
 insert into t1 values ('01234567800');
 1 row created.
 
 insert into t1 values ('12345678911');
 1 row created.
 
 insert into t1 values ('12345678922');
 1 row created.
 
 
 -- dados inválidos
 insert into t1 values ('1234567811');
 *
 ERROR at line 1:
 ORA-02290: check constraint (C1_NUMBER_FORMAT) violated
 
 insert into t1 values ('123456789XX');
 *
 ERROR at line 1:
 ORA-02290: check constraint (C1_NUMBER_FORMAT) violated

Este foi um pequeno exemplo prático da utilização de regexp_like na criação de uma tabela. Inúmeras variações podem ser criadas.

Pretendo postar exemplos práticos para melhorar o entendimento da aplicabilidade desta função.

Mandem sugestões para criarmos mais dicas como esta.

[]s

Marcos Braga

Marcos Braga

Pós-graduação em Computação Forense e Perícia Digital, pós-graduação em Redes de Computadores e com graduação em Tecnologia em Processamento de Dados.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress