sql-server - 如何查询sql数据库中的列

标签 sql-server database tsql

我正在合并几个表,我需要查询特定的列名。原因是我正在压缩的这些表有 FK 候选列但没有 FK,所以我必须继续查看每张表以查看它是否包含特定的列名,这似乎有点让人厌烦。

我从另一篇文章中得到了这个,但它并不完整。

SELECT 'SELECT ''' + TABLE_NAME + '.' + column_name + 
   ''' FROM ' + TABLE_NAME + ' WHERE ' + 
   column_name + ' = ''[THE COLUMN NAME I AM LOOKING FOR]'''
FROM INFORMATION_SCHEMA.COLUMNS 

上面的 TSQL 似乎结构不正确或者我遗漏了什么。

最佳答案

这个查询将得到一个列列表(连同它们的模式和表名)匹配你在参数 @SomeColumnName 中输入的内容:

DECLARE @SomeColumnName VarChar(200) = 'Test';

SELECT S.name SchemaName, T.name TableName, C.name ColumnName
FROM sys.columns C
     JOIN sys.tables T ON C.object_id = T.object_id
     JOIN sys.schemas S ON T.schema_id = S.schema_id
WHERE C.name = @SomeColumnName;

如果您使用的 SQL Server 版本没有较新的 DMV,请使用:

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS C
WHERE C.COLUMN_NAME = @SomeColumnName;

关于sql-server - 如何查询sql数据库中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11811180/

相关文章:

sql-server - 当存储过程正在运行时,如何使用PRINT语句跟踪执行?

sql - 汇总数据并获取 SUM 组

mysql - 如何编码日期以在 mysql 中进行高效查询

sql - 国家、地区、县、镇的最佳数据库模式

sql-server - SQL Server 提示这个 IF NOT EXISTS 语句

sql - 在 SQL 查询中将 Nvarchar DD/MM/YYYY 转换为 YYYY-MM-DD

用于 SQL 数据定义语言的 Java API

c# - 如何使用 sql helper 从具有 xml 的 sp 获取 xml 数据

c++ - 为什么我不能让我的 CDatabase 对象理解我的数据源名称?

sql-server - SSIS - 第二个脚本任务未在 Foreach 循环容器中执行