2009-09-23 14 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' 

に名前を付け、この1つは、カウント

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 
を取得し、取得します210

このコードは、データベースのテーブルに存在するいくつかのカラムを持つテーブルのリストを示しています。

データベース内の特定のテーブルの列数を知りたい場合は、単にwhereという節を使用します。 where Table_Name='name_your_table'

2

あなたは、クエリの下に試すことができます。以下のクエリは、すべてのテーブルと対応する列の数を表示します

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

修正トップクエリへデータベーススキーマで

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

任意のデータベースから実行できるようにするために、上記

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

私の状況では、私はtabl e 2つのデータベース内の2つの同一テーブルのスキーマ列数。 1つはメインデータベースで、もう1つはアーカイブデータベースです。

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; 

ここで注目すべき重要なことは、(dboのように、スキーマである)INFORMATION_SCHEMA前に、データベース名を修飾されています。私はこの(SQLを2012+)でした。これにより、プロシージャの実行が許可されていればデータ損失が発生する可能性のあるアーカイブデータベースではなく、メインデータベースに列が追加された場合にコードが破損する可能性があります。これは、使用して行うことができる

1

: -

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