我正在合并几个表,我需要查询特定的列名。原因是我正在压缩的这些表有 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/