Sql server 临时表:创建与选择到

Sql server 临时表:创建与选择到,sql-server,tsql,sql-server-2014,temp-tables,Sql Server,Tsql,Sql Server 2014,Temp Tables,我在SQL Server中搜索并找到了关于临时表的信息,因为我在我们的一个存储过程中遇到一行代码,它说: SELECT Value SomeId INTO #SomeTable FROM [dbo].[SplitIds](@SomeIds, ';') 我知道SomeTable作为临时表存储在tempdb中。然而,我不明白为什么我们不必先使用createtablesometable,因为这是在前面提到的文章中写的。我们的代码运行良好,我只是不明白为什么使用SELECT就足够了。。。坐到桌子上。当

我在SQL Server中搜索并找到了关于临时表的信息,因为我在我们的一个存储过程中遇到一行代码,它说:

SELECT Value SomeId INTO #SomeTable FROM [dbo].[SplitIds](@SomeIds, ';')
我知道SomeTable作为临时表存储在tempdb中。然而,我不明白为什么我们不必先使用createtablesometable,因为这是在前面提到的文章中写的。我们的代码运行良好,我只是不明白为什么使用SELECT就足够了。。。坐到桌子上。当我在开始添加createtablesometable时,会产生什么结果?我们的表现会有什么不同吗?表是否存储在其他位置?

选择。。。into[table]使用Select语句生成的数据集的属性创建临时表,然后填充该表

使用选择的替代方案。。。into[table]是使用CREATETABLE语句,后跟Insert into语句。显式创建表提供了更多的控制和精度

使用选择。。。进入[表格]似乎是一件不需要动脑筋的事,但在某些情况下,选择。。。进入[表格]可能有问题

例如,当您打算创建一个临时表并在以后插入其他行时,请使用Select。。。into[Table]语法可能会导致问题,尤其是基于字符串和可为空的字段

作为选择限制的一个例子。。。在[table]中,下面的脚本创建了一个临时表,其中包含两个字段:First_Name和Last_Name。接下来,Insert语句尝试将另一条记录添加到临时表中,但由于值将被截断而失败

Select 'Bob' as First_Name
    , 'Smith' as Last_Name
Into #tempTable;

Insert into #tempTable (First_Name, Last_Name)
Select 'Christopher' as First_Name
    , 'Brown' as Last_Name;
脚本失败,因为选择。。。into[table]语句创建与以下脚本等效的表:

Create Table #tempTable (
    First_Name varchar(3) Not Null
    Last_Name varchar(5) Not Null
);

因为该语法明确用于在正常时间创建和填充。您可以选择先创建范围,但insert语句需要更改为insert into temp select。。。。。基本上,答案是;因为SELECT INTO创建临时表,而INSERT INTO不创建临时表。另外,如果你先创建表格,你会有更多的控制权;指定主键等,但不能使用“选择到”,必须更改为“插入到”。@MatBailie这就是我要的。请把它作为答案贴出来,这样问题就可以结束了。