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:

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

Parâmetros utilizados:

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:

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

Deixe um comentário

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detectado !

Verificamos que está usando alguma extensão para bloquear os anúncios. O GPO (Grupo de Profissionais Oracle) obtém a sua renda através dos anúncios, para assim manter toda a estrutura dedicada a universalização do conhecimento.

Se você gosta de nosso trabalho, pedimos por gentileza que desabilite o ads blocker. Trabalhamos somente com o Google Adsense e tentamos ao máximo exibir apenas o necessário.

Agradecemos de antemão ! :)

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock