Muitas vezes nos deparamos com erros de campos que contem valor NaN ou Inf, mas não conseguimos selecionar de modo fácil esses campos, para isso no SQL Server existe uma função chamada ISNUMERIC onde simplesmente selecionar os valores que estão nesses estado dessa forma:


SELECT * FROM tabela_com_problema WHERE ISNUMERIC(campo_com_problema)=0


Só que no Firebird essa função não existe, mas podemos criá-la dessa forma:

CREATE FUNCTION isnumeric(val VARCHAR(30)) 
RETURNS BOOLEAN 
DETERMINISTIC 
AS 
DECLARE dblval DOUBLE PRECISION; 
BEGIN 
  dblval = CAST(val AS DOUBLE PRECISION); 
  RETURN TRUE; 
WHEN ANY DO 
  RETURN FALSE; 
END

E ai podemos fazer a seguinte consulta

SELECT * FROM tabela_com_problema WHERE ISNUMERIC(campo_com_problema)=FALSE

  • Sem rótulos