对于这个简单的陈述:
Select NULL as Col
INTO #temp
NULL列的默认数据类型是int
,如果我想避免提前创建#
表而不使用表变量,有没有办法将NULL列默认为varchar
何时使用SELECT INTO
条款?
由于
答案 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;