使用完整表路径名获取列类型

时间:2017-03-06 17:28:11

标签: sql sql-server

我试图在SQL服务器中获取列类型。我知道这很好用:

SELECT DATA_TYPE
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_NAME = 'table_name' and COLUMN_NAME = 'column_name';

但它不能与

一起使用
SELECT DATA_TYPE
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_NAME = '[database_name].[dbo].[table_name]' and COLUMN_NAME = 'column_name';

这是位于不同数据库中的存储过程的一部分,我希望能够将其完整传递给路径名,以便它可以从我所在的任何数据库中运行。

2 个答案:

答案 0 :(得分:1)

将数据库名称作为限定符放在INFORMATION_SCHEMA前面。如果您不对其进行硬编码,则需要使用动态SQL。但是" DbName.INFORMATION_SCHEMA.COLUMNS"将使您进入正确的系统视图(在同一服务器上),然后TABLE_NAME = x和COLUMN_NAME = y将转到表和列。

SELECT DATA_TYPE
    FROM THEOTHERDB.INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_NAME = 'table_name' and COLUMN_NAME = 'column_name';

答案 1 :(得分:0)

反之亦然! 您需要查询其他数据库中的information_schema对象

EG从OtherDB.information_schema.columns中选择*