none
Manejo de campos con registros vacios RRS feed

  • Pregunta

  • Cordial saludo, actualmente tengo la siguiente table temporal, pero me genera un error.

    select   max(s.fecha) as fecha, s.equipo, max(convert(float,ISNULL(s.horometro,0))) as hrTanqueo
    into #ultTanqMes
    from SalidasCombustible as s 
    group  by s.equipo, year(s.fecha), MONTH(s.fecha)

    este es el error

    Mens. 8114, Nivel 16, Estado 5, Línea 1
    Error converting data type varchar to float.

    El campo s.horometro tiene registros vacios y creo que ese debe ser el error, pero no se como convertir esos registros en cero(0), pues utlizo ISNULL pero pensaria que aplica solo si encuentra valores NULL.

    Que funcion me ayudaria a manejra estos registros para volverlos cero (0) y no generar este error?

    jueves, 26 de marzo de 2020 14:15

Respuestas

  • Fíjate bien en el mensaje de error:

    Error converting data type varchar to float.

    Nos está indicando que el campo no es numérico sino que es un varchar. Esto indica que puede ser que al estar "vacío" puede ser que en lugar de NULL lo que ocurre es que contiene una cadena de texto sin ningún carácter (que no es lo mismo que un NULL, y por eso el ISNULL no lo está convirtiendo).

    Si tienes una versión razonablemente moderna de SQL Server, puedes usar TRYCONVERT en lugar de convert. Esto te devuelve NULL si la conversión no es posible, y entonces aplicas ISNULL sobre ese resultado.

    jueves, 26 de marzo de 2020 14:52

Todas las respuestas

  • Fíjate bien en el mensaje de error:

    Error converting data type varchar to float.

    Nos está indicando que el campo no es numérico sino que es un varchar. Esto indica que puede ser que al estar "vacío" puede ser que en lugar de NULL lo que ocurre es que contiene una cadena de texto sin ningún carácter (que no es lo mismo que un NULL, y por eso el ISNULL no lo está convirtiendo).

    Si tienes una versión razonablemente moderna de SQL Server, puedes usar TRYCONVERT en lugar de convert. Esto te devuelve NULL si la conversión no es posible, y entonces aplicas ISNULL sobre ese resultado.

    jueves, 26 de marzo de 2020 14:52
  • Albeto mil gracias por el ayuda, me ha servido mucho

    Germanq

    martes, 21 de abril de 2020 15:42