2009-09-23 6 views

ответ

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

В MS-SQL Server 7+:

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

INFORMATION_SCHEMA получает сведения из значений, соответствующих текущей подключения к базе данных, так что это будет работать. –

32

Этот запрос получает столбцы имя

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

И это один получает кол

SELECT Count(*) FROM INFORMATION_SCHEMA.Columns where TABLE_NAME = 'YourTableName' 
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'

2

Вы можете попробовать ниже запрос:

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

Исправление к началу запроса выше, чтобы запустить из любой базы данных

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

Ниже запрос будет отображать все таблицы и соответствующие количество столбцов в схеме базы данных

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

В моей ситуации я сравнивал tabl число столбцов схемы для 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). Это позволит разбить код, если столбцы были добавлены в основную базу данных, а не в архивную базу данных, в которой, если процедура была разрешена для запуска, потеря данных почти наверняка произойдет.

1

Это может быть сделано с помощью: -

SELECT COUNT(COLUMN_NAME) 'NO OF COLUMN' FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'Address' 
Смежные вопросы