我需要在sql中使用查询来获取表中的总列数。任何人都可以帮忙吗?
答案 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]