[Code] ¿Cuál es el tipo de datos de NULL por defecto en una consulta?

Desarrollando un aplicativo me encontré con la curiosidad de saber cuál sería el tipo de datos de una columna en donde sólo se indicara:

select null as A

 

¿Cual es el tipo de datos de la columna A?

 

La respuesta es int, ¿cómo lo determiné?, usando la técnica descrita en el artículo [Code] Cómo conocer la estructura de una tabla temporal 

El código usado es el siguiente:

select null as A
into #t 

exec tempdb..sp_help #t

drop table #t

 

Para especificar un tipo de datos en particular debemos hacer un cast al NULL

select cast(null as bit) as A
into #t 

exec tempdb..sp_help #t

drop table #t

 

Espero sea de ayuda,

FREDDY LEANDO ANGARITA CASTELLANOS
Sql Server MVP

 

[Code] Cómo visualizar la estructura de una tabla temporal

Hacer definiciones de tablas es siempre mas efectivo que generarlas dinámicamente, por lo que tomarse el trabajo de revisar campo a campo qué campos y cómo aplican a lo que queremos hacer puede tomar tiempo, aquí publico un ejemplo de como llevar los resultados a tabla temporal, ver su estructura para usar dicha información para generar una tabla (o variable tipo tabla) más rápidamente

;With Ejemplo as (
select 1 as b, 'valores' as c
union all
select 2 as b, 'Misvalores' as c)
select * 
into #t 
from Ejemplo

exec tempdb..sp_help #t

drop table #t

 

El ejemplo es simple pero imagine tener que varios miles de registros y tener que verificar campo a campo la longitud máxima de cada uno de ellos, el tipo de datos, etc.

Uno de los resultados de sp_help retorna

El cual con poco procesamiento podemos convertir en una tabla, tabla temporal o variable tipo tabla según lo requerido

La técnica mencionada solo se recomienda en entornos de desarrollo y no debe ser usada con precaución en tablas con gran cantidad de datos (una opción es limitar el número de registros de la tabla a devolver)

 

Espero sea de ayuda,

 

FREDDY LEANDO ANGARITA CASTELLANOS
Sql Server MVP