Funcion ISNULL() y tamano resultante en numericos

15/10/2006 - 18:15 por Tito | Informe spam
Hola,

Quiero saber si cuando uno usa por ej.

select ISNULL(valor, 0) from tabla

sql server da simpre el tamano adecuado a la columna resultante para cuando
no haya ningun valor distinto de nulo. O habria que ponerlo asi por ejemplo
para mayor seguridad:

select ISNULL(valor, 000000.00) from tabla
o asi
select ISNULL(valor, convert(numeric(8,2),0) ) from tabla
?

gracias
 

Leer las respuestas

#1 Alejandro Mesa
16/10/2006 - 15:21 | Informe spam
Tito,

Interesante tu pregunta. La funcion ISNULL convertira el valor de la derecha
al tipo de la expresion que aparece a la izquierda (primer parametro en la
funcion). Por lo que no es necesario hacer la conversion explicita.


select isnull(cast(null as datetime), 'a')
go


select isnull(cast(null as int), 1.33)
go


select isnull(cast(null as numeric(8, 2)), 0)
go

declare @v sql_variant

set @v = isnull(cast(null as numeric(8, 2)), 0)

select
@v as [Value],
SQL_VARIANT_PROPERTY(@v, 'Precision') as [Precision],
SQL_VARIANT_PROPERTY(@v, 'Scale') as [Scale]
go

Algo que quiero puntualizar aqui, es que muchas veces se usa la funcion
COALESCE como funcion substituta de ISNULL. Estas se diferencian en que la
funcion COALESCE devolvera el tipo de data de mas alta precedencia en la
lista de parametros.


select
isnull(cast(null as int), cast(2.5 as numeric(8, 2))),
coalesce(cast(null as int), cast(2.5 as numeric(8, 2)))
go


AMB


"Tito" wrote:

Hola,

Quiero saber si cuando uno usa por ej.

select ISNULL(valor, 0) from tabla

sql server da simpre el tamano adecuado a la columna resultante para cuando
no haya ningun valor distinto de nulo. O habria que ponerlo asi por ejemplo
para mayor seguridad:

select ISNULL(valor, 000000.00) from tabla
o asi
select ISNULL(valor, convert(numeric(8,2),0) ) from tabla
?

gracias



Preguntas similares