2017-10-17 2 views
0

Pour cette simple affirmation:Créer #temp en utilisant SELECT INTO avec le type de données souhaité

Select NULL as Col INTO #temp

Le type de données par défaut pour la colonne NULL est int, si je veux éviter de créer # tables avant et ne pas utiliser les variables de table , est-il possible de définir par défaut la colonne NULL comme varchar lors de l'utilisation de la clause SELECT INTO?

Merci

+0

Je ne comprends pas le but de ce que vous essayez de faire? Pouvez-vous élaborer sur ce que vous essayez de faire et pourquoi? – Tanner

+0

qui est juste un exemple, le cas réel est le «union tous» jeter l'erreur, car il essayait de combiner deux colonnes de type différent – LONG

Répondre

1

Juste CAST il.

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

Il n'y a aucun moyen de le faire comme un défaut implicite pour NULL nu s.

+0

Merci! :) :) :) – LONG

1

Vous pouvez utiliser convert comme ci-dessous:

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

à la place de 10, vous pouvez utiliser votre taille requise

1

Les réponses fournies devraient suffire. Je le fais beaucoup; voici quelques techniques SELECT INTO que j'ai trouvé utiles (notez mes commentaires inline):

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;