2009-09-23 13 views

Odpowiedz

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

W MS-SQL Server 7+:

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

information_schema pobiera zaludnionych od wartości odpowiadającej aktualnej połączenia z bazą danych, więc to będzie działać. –

32

To zapytanie pobiera kolumny wymienić

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

I to ma się liczyć

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 

Ten kod wyświetla listę tabel z liczbą kolumn obecnych w tej tabeli dla bazy danych.

Jeśli chcesz poznać numer kolumny dla konkretnej tabeli w bazie danych , po prostu użyj klauzuli where, np. where Table_Name='name_your_table'

2

Można spróbować poniżej zapytania:

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

Korekta górnym zapytania powyżej, w celu umożliwienia, aby uruchomić z dowolnej bazy danych

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

poniższe zapytanie wyświetli wszystkie tabele i odpowiedni licznik kolumn w schemacie bazy danych

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

W mojej sytuacji porównywałem tabl liczba kolumn schematu dla 2 identycznych tabel w 2 bazach danych; jedna to główna baza danych, a druga to archiwalna baza danych. Zrobiłem to 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; 

Ważne jest, aby zauważyć tutaj jest kwalifikującą nazwę bazy danych przed INFORMATION_SCHEMA (co jest schemat, jak dbo). Umożliwi to złamanie kodu, w przypadku gdy kolumny zostały dodane do głównej bazy danych, a nie do archiwalnej bazy danych, w której gdyby procedura mogła być uruchomiona, utrata danych prawie na pewno wystąpiłaby.

1

To można zrobić za pomocą: -

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