在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
)之前限定数据库名称。 如果将列添加到主数据库而不添加到归档数据库(如果允许运行该过程),那么这将允许代码打破,几乎肯定会发生数据丢失。