[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