Devuelve una conversión de valor al tipo de datos especificado si la conversión se realiza correctamente; de lo contrario, devuelve NULL.
Usado en una consulta en la que puede haber alfanuméricos y numéricos para buscar en un rango por defecto nos devovería error.
Tengo la siguiente tabla con campo Cod. y es tipo alfanumérico:
- 1
- 2r
- 4
- 57
- 66h
- 98
- 105
- etc
Necesito sacar entre un rango los datos (por ejemplo 55 al 205) pero los alfanuméricos no los necesito o los puedo omitir.
Por ejemplo la solución sería:
- 57
- 98
- 105
Con la consulta siguiente obtengo todos los numéricos:
SELECT cod from TABLA where isnumeric(cod) = 1
- 1
- 4
- 57
- 98
- 105
Pero si aplico rangos devuelve error:
SELECT cod from TABLA whERE isnumeric(cod) = 1 and cod>55 and cod<205
Error de conversión al convertir el valor nvarchar ‘2r’ al tipo de datos int.
¿Cómo puedo solucionarla?
Usamos Try_Cast
Si tienes un SQL Server moderno, un remedio es aplicar un TryCast (que devuelve null cuando la conversión no puede hacerse):
SELECT cod from TABLA WHERE TRY_CAST(cod AS INT)>55 and TRY_CAST(cod AS INT)<205
- 57
- 98
- 105