[firebase-br] SIMILAR

Gladiston Santana gladiston em vidy.com.br
Ter Maio 10 09:42:37 -03 2016


Não é um subset completo do regex, na realidade é bem limitado e com a nova
possibilidade de dominios sem a necessidade do sufixo do pais matou a
maioria dos regex php que validavam usando sufixos conhecidos, sim agora
pode-se ter dominios como banco.bradesco.

Embora possa usar o 'similar to' para a validação de que precisa, é bem
mais facil criar um domain assim:
CREATE DOMAIN D_EMAIL AS VARCHAR(255)
CHECK (((VALUE IS NULL) OR (VALUE='')) OR ( VALUE LIKE '%@%.%'));
Esse domain permitiria nulo/vazio, mas se tiver valor deverá ter o '@' e
depois do '@' que haja ao menos 1 ponto.

Ao estabelecer constraints, não apenas para a acima, mas qualquer uma,
sempre teste as regras num execute block:
execute block
returns(verdadeiro varchar(1) )
as
declare variable testvalue varchar(255);
begin
  testvalue='teste em gmail.com' ; -- teste com teste em gmail e dará falso
  verdadeiro='N';
  if  (((testvalue IS NULL) OR (testvalue='')) OR ( testvalue LIKE '%@%.%'))
    then verdadeiro='S';
  suspend;
end
Obs: tenha uma procedure igual ao execute block acima para ficar testando
novas regras de validação (constraints).

Muito cuidado ao aplicar constraints com dados pré-existentes, pois ao
aplicar uma regra no meio do caminho, poderá invalidar um restore futuro,
já que ao popular a base, a regra não permitira a inclusão de valores
antigos com essa regra. Assim, antes de aplicar tenha certeza de que a base
é consistente com a regra. Normalmente, o FB checa isso para você, mas há
ferramentas no mercado que podem suprimir a checagem por impor a regra
mudando diretamente nas tabelas de sistemas.

inte+

Em 6 de maio de 2016 16:33, Fábio P. Santos <fpsgyn em gmail.com> escreveu:

> Alguém já utilizou a instrução SIMILAR do firebird 2.5 ? estou tentando
> aplicar um REGEX para validação de email
>
> Obrigado...



Mais detalhes sobre a lista de discussão lista