使用具有所需数据类型的SELECT INTO创建#temp

时间:2017-10-17 15:19:42

标签: sql-server tsql

对于这个简单的陈述:

Select NULL as Col INTO #temp

NULL列的默认数据类型是int,如果我想避免提前创建#表而不使用表变量,有没有办法将NULL列默认为varchar何时使用SELECT INTO条款?

由于

3 个答案:

答案 0 :(得分:1)

只需CAST

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

没有办法将此作为裸NULL的隐式默认值。

答案 1 :(得分:1)

您可以使用如下转换:

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

代替10,您可以使用所需的尺寸

答案 2 :(得分:1)

提供的答案应该足够了。我做了很多;这里有一些我发现有用的SELECT INTO技术(请注意我的内联注释):

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;