Para esta simple declaración:

Select NULL as Col INTO #temp

El tipo de datos predeterminado para la columna NULL es int, si quiero evitar crear tablas # por delante y no usar variables de tabla, ¿hay alguna forma de predeterminar la columna NULL como varchar al usar { Cláusula {X3}}?

Gracias

0
LONG 17 oct. 2017 a las 18:19

3 respuestas

La mejor respuesta

Solo CAST eso.

Select CAST(NULL AS VARCHAR(30)) as Col 
INTO #temp

No hay forma de hacerlo como un valor implícito implícito para NULL s desnudos.

3
Martin Smith 17 oct. 2017 a las 15:21

Las respuestas proporcionadas deberían ser suficientes. Lo hago mucho; Aquí hay algunas técnicas de SELECT INTO que he encontrado útiles (tenga en cuenta mis comentarios en línea):

if object_id('tempdb..#t1') is not null drop table #t1;
select 
  someid   = identity(int,1,1),          -- add an identity column 
  someTxt1 = cast('xxx' as varchar(10)), -- set the datatype
  someTxt2 = isnull(cast(555 as int), 0) -- set the column as not nullable
into #sometable;
2
Alan Burstein 17 oct. 2017 a las 15:31

Puede usar convertir de la siguiente manera:

select convert(varchar(10), null) as col into #temp

En lugar de 10 puedes usar el tamaño requerido

1
Kannan Kandasamy 17 oct. 2017 a las 15:22