2009-09-23 21 views

Respuesta

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

En MS-SQL Server 7+:

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

El INFORMATION_SCHEMA se rellena a partir de los valores correspondientes a la conexión de base de datos actual, de modo que esto funcionará. –

32

Esta consulta recupera el nombre columnas

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

Y esto se tiene la cuenta de

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 

Este código muestra una lista de tablas con varias columnas presentes en esa tabla para una base de datos.

Si desea saber el número de columna de una tabla en particular en una base de datos , simplemente utilice where cláusula, p. where Table_Name='name_your_table'

2

Usted puede tratar por debajo de consulta:

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

Corrección de consulta superior por encima, para permitir a correr desde cualquier base de datos

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

La consulta siguiente mostrará todas las tablas y correspondiente número de columnas en un esquema de base de datos

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

En mi situación, estaba comparando tabl conteo de columna de esquema e para 2 tablas idénticas en 2 bases de datos; uno es la base de datos principal y el otro es la base de datos de archivo. Hice esto (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; 

Lo importante a notar aquí es calificar el nombre de base de datos antes INFORMATION_SCHEMA (que es un esquema, como dbo). Esto permitirá que el código se rompa, en caso de que las columnas se hayan agregado a la base de datos principal y no a la base de datos de archivo, en la que si se permitiera la ejecución del procedimiento, la pérdida de datos se produciría con toda seguridad.

1

Se puede hacer uso de: -

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