获取sql中表的总列数

时间:2009-09-23 09:42:49

标签: sql-server

我需要在sql中使用查询来获取表中的总列数。任何人都可以帮忙吗?

10 个答案:

答案 0 :(得分:76)

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

答案 1 :(得分:34)

此查询获取列名称

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

这个得到了计数

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

答案 2 :(得分:14)

在MS-SQL Server 7 +中:

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

答案 3 :(得分:2)

您可以尝试以下查询:

select 
  count(*) 
from 
  all_tab_columns
where 
  table_name = 'your_table'

答案 4 :(得分:2)

以下查询将显示数据库架构中的所有表和相应的列数

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

答案 5 :(得分:1)

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'

答案 6 :(得分:1)

可以使用: -

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

答案 7 :(得分:0)

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

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

答案 8 :(得分:0)

在我的情况下,我正在比较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)。这将允许代码中断,以防将列添加到主数据库而不是归档数据库,如果允许该过程运行,则几乎肯定会发生数据丢失。

答案 9 :(得分:0)

获取SQL表所有列的列表

   select column_name from information_schema.columns where table_name=[dbo].[your_table_name]

获取SQL表的列数列表

    select count(column_name) from information_schema.columns where table_name=[dbo].[your_table_name]