En SQL Server hay una función que comprueba si un valor es numérico (en un alarde de complejidad, esa función se llama ISNUMERIC), pero no si es un número entero o tiene decimales.

Hoy he tenido que hacer una lista con los registros de una tabla cuyo campo “escala” tuvieran decimales (vale, decimales diferentes de cero, pero vamos a dejarlo en decimales sin más). Para encontrar el modo de hacerlo, he estado buscando en foros y he encontrado funciones “hechas artesanalmente” (vamos, que SQL Server no tiene nada para comprobarlo directamente) que, en teoría, comprobaban si un número tenía o no decimales.

He probado un par, sin éxito, y me he empezado a desesperar un poco.

Y luego he dado con mi propia solución: Convertir el valor a String y ver si tiene punto decimal.

CAST(nombreCampo AS nvarchar) like '%.%'

En la query queda así:

select [CAMPOS]
from [TABLAS] 
where [CONDICIONES] AND 
(CAST(nombreCampo AS nvarchar) like '%.%')

Esta entrada es un poco tonta y me apuesto que muchos de vosotros o habéis conseguido que os funcione un procedimiento hecho para saber si un número es entero o decimal, o ya habíais dado con esta solución, pero a mi me ha costado llegar a ella (una hora, de hecho), y quería compartirla por si acaso hay más gente como yo por el mundo 🙂

……………….

Espero que esta entrada pueda ser de utilidad, y si no, como siempre, aquí tenéis un gato para compensar:

8a8ab59890b64617208fdd713421bd6b

Anuncios