当我需要现有表的列时,我使用查询:
SELECT c.[name]
FROM
(SELECT * from syscolumns) c
INNER JOIN
(SELECT [id] from sysobjects where name= 'tableName') o on c.[id]=o.[id]
我需要在runTime期间创建的表的字段:
select
a.ID,
b.lName,
b.fName
into #T
from
a
inner join
b on a.id=b.id
select * from #T_columns
将生成一个包含3行的表: ID L-NAME FNAME
我该怎么做?
由于
答案 0 :(得分:0)
创建临时表时,它将位于tempdb中。你可以这样查看:
SELECT COLUMN_NAME
FROM tempdb.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME LIKE '#T|_%' ESCAPE '|'
如果在tempdb中执行SELECT * FROM INFORMATION_SCHEMA.TABLES,您将看到您使用的临时表名称(#T)实际上附加了许多下划线,后跟唯一标识符。所以你不会发现它只是搜索table_name ='#T'。
这就是为什么你必须像我上面所示使用LIKE的原因。这将匹配“#T_”,后跟任何其他其他字符。
答案 1 :(得分:0)
试试这个
SELECT sc.NAME
FROM
tempdb..SYSOBJECTS so JOIN
tempdb..SYSCOLUMNS sc ON sc.id = so.id
WHERE so.NAME LIKE '#T%'