在sql中获取表中的列总数

我需要一个SQL查询来获得一个表中的总列。可以帮助任何人吗?

SELECT COUNT(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_CATALOG = 'database' AND TABLE_SCHEMA = 'dbo' AND TABLE_NAME = 'table' 

该查询获取列名称

 SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.Columns where TABLE_NAME = 'YourTableName' 

而这一个得到了伯爵

 SELECT Count(*) FROM INFORMATION_SCHEMA.Columns where TABLE_NAME = 'YourTableName' 

在MS-SQL Server 7 +中:

 SELECT count(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'mytable' 

你可以试试下面的查询:

 select count(*) from all_tab_columns where table_name = 'your_table' 
 Select Table_Name, Count(*) As ColumnCount From Information_Schema.Columns Group By Table_Name Order By Table_Name 

此代码显示了该表中列表中列出的数量为数据库的列数。

如果你想知道数据库中某个特定表的列数,那么只需使用where子句,例如where Table_Name='name_your_table'

下面的查询将显示数据库模式中的所有表和相应的列数

 SELECT Table_Name, count(*) as [No.of Columns] FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = 'dbo' -- schema name group by table_name 

SELECT COUNT(COLUMN_NAME)'NO OF COLUMN'FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME ='Address'

更正上面的顶部查询,允许从任何数据库运行

 SELECT COUNT(COLUMN_NAME) FROM [*database*].INFORMATION_SCHEMA.COLUMNS WHERE TABLE_CATALOG = 'database' AND TABLE_SCHEMA = 'dbo' AND TABLE_NAME = 'table' 

在我的情况下,我比较了2个数据库中2个相同表的表模式列数; 一个是主数据库,另一个是档案数据库。 我做了这个(SQL 2012+):

 DECLARE @colCount1 INT; DECLARE @colCount2 INT; SELECT @colCount1 = COUNT(COLUMN_NAME) FROM MainDB.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'SomeTable'; SELECT @colCount2 = COUNT(COLUMN_NAME) FROM ArchiveDB.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'SomeTable'; IF (@colCount1 != @colCount2) THROW 5000, 'Number of columns in both tables are not equal. The archive schema may need to be updated.', 16; 

这里要注意的重要一点是在INFORMATION_SCHEMA (这是一个模式,如dbo )之前限定数据库名称。 如果将列添加到主数据库而不添加到归档数据库(如果允许运行该过程),那么这将允许代码打破,几乎肯定会发生数据丢失。