TRY_CAST :: Busqueda entre rango de numéricos encontrando alfanumericos en algunos registros

por | octubre 24, 2017

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
Print Friendly, PDF & Email
Categoría: SQL

Deja un comentario