utilizar validar tipo de dados em um IF

1. utilizar validar tipo de dados em um IF

Felipe
FerreiraFelipe

(usa CentOS)

Enviado em 02/12/2019 - 06:25h

Bom dia, sou novo por aqui.

Estou com um projeto onde preciso criar uma Function com estrutura IF
basicamente se uma determinada coluna for do numero inteiro ele executa um determinado comando
tentei utilizar IS Numeric, IS Int, IS NUMBER porem recebo uma mensagem de erro
ERROR: syntax error at or near "NUMBER"

EXEMPLO ,

for i IN REVERSE cont..0 LOOP
IF (SUBSTRING(NEW.cpf, i, 1) IS NUMBER ) THEN -- Nessa linha se for um numero deve entrar no IF
numero := SUBSTRING(NEW.cpf, contNumero, 1);
contNumero := contNumero+1;
confere := confere + (numero * (i+1));
RAISE NOTICE 'i = % cont = % NUMERO % confere %',i, cont, numero, confere;
i := i+1;
ELSE
RAISE EXCEPTION 'numero de CPF invalido, não utilize letras entre os 9 primeiros digitos'; -- Cancela a Inclusão
END IF;

Obrigado


  


2. Re: utilizar validar tipo de dados em um IF

Diego Mendes Rodrigues
diegomrodrigues

(usa Ubuntu)

Enviado em 02/12/2019 - 17:36h

Você pode utilizar o CASE ao invés do IF, da seguinte forma:

select column_name,
case
when domain_name is not null then domain_name
when data_type='character varying' THEN 'varchar('||character_maximum_length||')'
when data_type='numeric' THEN 'numeric('||numeric_precision||','||numeric_scale||')'
else data_type
end as myType
from information_schema.columns
where table_name='test'


Abraço,
Diego M. Rodrigues


3. Re: utilizar validar tipo de dados em um IF

Felipe
FerreiraFelipe

(usa CentOS)

Enviado em 03/12/2019 - 15:28h

diegomrodrigues escreveu:

Você pode utilizar o CASE ao invés do IF, da seguinte forma:

select column_name,
case
when domain_name is not null then domain_name
when data_type='character varying' THEN 'varchar('||character_maximum_length||')'
when data_type='numeric' THEN 'numeric('||numeric_precision||','||numeric_scale||')'
else data_type
end as myType
from information_schema.columns
where table_name='test'


Abraço,
Diego M. Rodrigues

Acho que me expressei mal, no caso não estou realizando um select.

Estou criando uma trigger para validar a coluna de uma tabela (CPF char(11))
a função dever carácter por carácter e realizar um calculo
exemplo
CPF: 424555666-7X

preciso verificar se os 9 primeiro dígitos são números antes de realizar o calculo.

SUBSTRING(NEW.cpf, i, 1) nesta parte estou conseguindo pegar digito por digito antes de ser gravado.
Mas não sei como verificar se oque esta retornando é um numero ou letra.










Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts