微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL Server,在TSQL中创建临时表时出现问题

如何解决SQL Server,在TSQL中创建临时表时出现问题

| 嗨,当我执行以下Tsql时,出现以下错误消息。但是sql语法没有错吗?
create table #tb ([t1] tinyint,[t2] varchar(50))
insert into #tb values
    (1,\'a\'),(2,\'b\')
  Msg 102,第15级,状态1,第3行   \',\'附近的语法不正确。 SQL查询窗口中没有其他内容。运行sql Server 2005。     

解决方法

正如jmoreno所提到的,SQL Server 2008+支持1语法,但是您将其标记为SQL Server 2005。 采用:
CREATE TABLE #tb ([t1] tinyint,[t2] varchar(50))

INSERT INTO #tb 
SELECT 1,\'a\'
UNION ALL
SELECT 2,\'b\'
也可以使用
SELECT ... INTO
子句在单个查询中执行此操作,但是临时表尚不存在:
SELECT *
  INTO #tb
  FROM (SELECT CAST(1 AS TINYINT) AS t1,CAST(\'a\' AS VARCHAR(50)) AS t2
        UNION ALL
        SELECT 2,\'b\') x
    ,尝试这个:
create table #tb ([t1] tinyint,[t2] varchar(50));
insert into #tb ([t1],[t2])
values(1,\'a\'),(2,\'b\')
您需要指定要插入的列。 //编辑 抱歉,下面是SQL 2005语法。它没有优雅。
CREATE TABLE #tb ([t1] TINYINT,[t2] VARCHAR(50));
INSERT INTO #tb
SELECT 1,\'b\'
    ,您说您正在使用SQL 2005,但是直到2008年才实现VALUES(),()语法。     ,看起来您正在尝试插入两行,因此您需要先插入第一行,然后再插入第二行,而不是尝试将所有行都压缩成一行:
CREATE TABLE #tb ([t1] TINYINT,[t2] VARCHAR(50));
INSERT INTO #tb([t1],[t2]) VALUES (1,\'a\'); --row 1
INSERT INTO #tb([t1],[t2]) VALUES (2,\'b\'); --row 2

--see if it worked
SELECT [t1],[t2] 
FROM #tb

--clean up the temp table when you\'re done
DROP TABLE #tb
    ,选择t.field1,t.field2 INTO #myTempTable 从myDB.myOwner.myTable t 在哪里... ORDER BY t.field1,t.field2; -如果希望表为GLOBAL,请使用## myTempTable作为名称。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。