首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查数据库中所有表中存在的列名

问如何检查数据库中所有表中存在的列名
EN

Stack Overflow用户
提问于 2019-03-13 18:29:21
回答 4查看 478关注 0票数 1

我正在尝试编写一个查询,在该查询中,我可以检查某个数据库中的所有表中是否都存在某些列名。为了避免困难,我试图一次访问所有的表,并检查表中是否存在列。我能够找到下面的代码来获得表名:

代码语言:javascript
复制
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' AND TABLE_CATALOG='SAMPLE_DB_NAME'  

我无法进入每个表并检查列名。

如果有人可以帮助我进行查询,进入每个表并检查列名,这些列名对于所有表都是恒定的。

EN

回答 4

Stack Overflow用户

发布于 2019-03-13 18:34:50

尝尝这个

代码语言:javascript
复制
SELECT  TABLE_CATALOG,
        TABLE_NAME,
        COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE  TABLE_CATALOG='SAMPLE_DB_NAME' 
AND CHARINDEX('Status',COLUMN_NAME) = 1 -- Specify the column name to check the column is existed
                                        --- in the datbase of all available tables 
票数 0
EN

Stack Overflow用户

发布于 2019-03-13 18:36:55

下面的查询将列出不存在任何给定特定字段的所有表名。

代码语言:javascript
复制
SELECT distinct TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE  TABLE_CATALOG='testdb' 
and TABLE_NAME not in(
select object_name(object_id) ObjectName from sys.COLUMNS where name  in ('YourfieldName1', 'YourfieldName2')

下面的查询将列出它将在其中找到指定字段的所有表名。

代码语言:javascript
复制
select object_name(object_id) ObjectName, * 
from sys.COLUMNS where name  in ('YourfieldName1', 'YourfieldName2')
票数 0
EN

Stack Overflow用户

发布于 2019-03-13 18:44:32

代码语言:javascript
复制
--List of tables
SELECT * FROM sys.tables

--List of Columns
SELECT * FROM sys.columns

--List of Columns Tables joined
SELECT tbl.[name] AS TableName, clm.[name] AS ColumnName FROM sys.tables as tbl INNER JOIN sys.columns as clm ON tbl.[object_id] = clm.[object_id]



-You can check with the column name if the column exist in all tables 
USE MyDataBase
DECLARE @TableCount INT
DECLARE @FoundTables INT
SET @TableCount = ( SELECT COUNT(*) FROM sys.tables)
SET @FoundTables = ( SELECT COUNT(DISTINCT(tbl.[name])) AS NumberOfTables FROM sys.tables as tbl INNER JOIN sys.columns as clm ON tbl.[object_id] = clm.[object_id] WHERE clm.[name] = 'YourColumnName')

IF @FoundTables = @TableCount
 BEGIN
   PRINT 'The column is present in all tables'
 END
ELSE
 BEGIN 
   PRINT 'The column is not present in all tables'
 END
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55139649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档