Sql server 如何从特定数据库获取表的列名?

Sql server 如何从特定数据库获取表的列名?,sql-server,Sql Server,我想得到一个表的列名,因为我在下面的查询中使用了这个列名,它工作得很好 select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'G001' 但现在我想从特定的数据库中获取表的列名,对于下面的查询,我使用了相同的方法,但它并没有给出任何输出 例如,HS是我在多个数据库中的数据库名,G001是我的表名 在我的例子中,我需要传递数据库名和表名作为参数 select COLUMN_NAME from INFOR

我想得到一个表的列名,因为我在下面的查询中使用了这个列名,它工作得很好

select COLUMN_NAME 
from INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME = 'G001'
但现在我想从特定的数据库中获取表的列名,对于下面的查询,我使用了相同的方法,但它并没有给出任何输出

例如,
HS
是我在多个数据库中的数据库名,
G001
是我的表名

在我的例子中,我需要传递数据库名和表名作为参数

select COLUMN_NAME 
from INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME = 'HS..G001'

因此,我的问题是如何从特定数据库中获取表的列名?

您在要查询的数据库中使用
信息\u模式,例如:

SELECT COLUMN_NAME 
FROM HS.INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME='G001'
如果需要将其作为参数传递,则需要编写一些动态SQL:

DECLARE @database VARCHAR(255) = 'HS'
DECLARE @table VARCHAR(255) = 'G001'

DECLARE @sql VARCHAR(1000) = 'SELECT COLUMN_NAME 
                              FROM ' + @database + '.INFORMATION_SCHEMA.COLUMNS 
                              WHERE TABLE_NAME = ''' + @table + ''''

EXEC(@sql)

注意:这样的动态SQL可能容易受到SQL注入的攻击,因此请确保对输入进行清理。

Simplay将数据库名称放在前面,如下所示:

select COLUMN_NAME from [<database_name>].INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='G001'
从[]中选择列\u名称。信息\u SCHEMA.COLUMNS,其中表\u NAME='G001'
只要用这个:

SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='HS..G001'
  AND TABLE_SCHEMA='database_name'

对不起,是我的错,我在没有
的情况下尝试了。我没有提问,我的英语不够礼貌。我很抱歉。