找到Temp表的列名

Pரத*_*ீப் 5 sql t-sql sql-server temp-tables

我需要找到列名临时表.

如果它是物理表,那么我们可以使用sys.columnsInformation_schema.columns系统视图来查找列名.

同样有没有办法找到临时表中的列名?

Wil*_*ras 12

SELECT *
FROM   tempdb.sys.columns
WHERE  object_id = Object_id('tempdb..#sometemptable'); 
Run Code Online (Sandbox Code Playgroud)


Hum*_*bir 9

要仅获取列名称,您可以使用下面的查询:

SELECT * 
FROM tempdb.sys.columns 
WHERE [object_id] = OBJECT_ID(N'tempdb..#temp');
Run Code Online (Sandbox Code Playgroud)

要获取具有数据类型的列名称,您可以使用此查询,但需要确保 sp_help 在表所在的同一数据库 (tempdb) 中运行。

EXEC tempdb.dbo.sp_help @objname = N'#temp';
Run Code Online (Sandbox Code Playgroud)

您可以通过加入 tempdb.sys.columns 来获得相同的结果,如下所示:

SELECT [column] = c.name, 
       [type] = t.name, c.max_length, c.precision, c.scale, c.is_nullable 
    FROM tempdb.sys.columns AS c
    INNER JOIN tempdb.sys.types AS t
    ON c.system_type_id = t.system_type_id
    AND t.system_type_id = t.user_type_id
    WHERE [object_id] = OBJECT_ID(N'tempdb.dbo.#temp');
Run Code Online (Sandbox Code Playgroud)