Encuentra el número de columnas en una tabla

122

Es posible encontrar el número de filas en una tabla:

select count(*) from tablename

¿Es posible encontrar el número de columnas en una tabla?

praveenjayapal
fuente

Respuestas:

204
SELECT COUNT(*)
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE table_catalog = 'database_name' -- the database
   AND table_name = 'table_name'
Nathan Koop
fuente
1
Hola, no puedo entender, aquí la información puede darme la consulta una vez más ... nombre de la tabla = columnas de publicación = PostingID, PostingDate, Body
praveenjayapal
2
A menos que esté confundido, está buscando cuántas columnas hay en la tabla. Si ejecuta la siguiente consulta, devolverá 3 (suponiendo que las únicas columnas sean PostingId, PostingDate y Body) SELECT COUNT (*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'post'
Nathan Koop
10
Creo que necesita reemplazar "table_schema" arriba con "TABLE_CATALOG" para la variable 'database_name'
Harvey Darvey
En MySQL land (etiquetado en la pregunta) ... Un MySQL databasees equivalente a un schemaANSI SQL y table_catalogsiempre lo esdef
Steve Buzonas
1
"table_catalog" necesita cambiar a "TABLE_SCHEMA"
Chamara Maduranga
39
SELECT COUNT(COLUMN_NAME) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE 
    TABLE_CATALOG = 'Database name' 
    AND TABLE_SCHEMA = 'dbo' 
    AND TABLE_NAME = 'table name'
kavitha
fuente
1
Esta respuesta funciona perfectamente, al menos con Microsoft SQL Server
Antonio Serrano
8
SELECT count(*)
FROM information_schema.columns
WHERE table_name = 'Your_table_name';

Nota: Your_table_name debe reemplazarse por el nombre real de la tabla

Rahul Yadav
fuente
6

Usando JDBC en Java:

    String quer="SELECT * FROM sample2";

    Statement st=con.createStatement();
    ResultSet rs=st.executeQuery(quer);
    ResultSetMetaData rsmd = rs.getMetaData();
    int NumOfCol=0;
    NumOfCol=rsmd.getColumnCount();
    System.out.println("Query Executed!! No of Colm="+NumOfCol);
Himanshu
fuente
2
Este es un buen enfoque genérico (agnóstico RDBMS). Solo sugiero cambiar la consulta a SELECT * FROM sample2 WHERE 1=2. De esta forma, puede obtener el esquema pero no datos, lo que podría agregar una sobrecarga innecesaria.
Cascader
5

Ha sido un poco tarde, pero tómalo de mí ...

En el editor (Nueva consulta) seleccionando el objeto de la base de datos, también puede ser una tabla, si usamos la tecla de acceso directo Alt + F1 obtendremos toda la información del objeto y creo que también resolverá su problema.

itb564
fuente
4
SELECT count(*) FROM information_schema.`COLUMNS` C
WHERE table_name = 'your_table_name'
AND TABLE_SCHEMA = "your_db_name"
Ketul Rathod
fuente
4

Bueno, probé la respuesta de Nathan Koop y no funcionó para mí. Lo cambié a lo siguiente y funcionó:

SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'table_name'

Tampoco funcionó si pongo USE 'database_name'ni WHERE table_catalog = 'database_name' AND table_name' = 'table_name'. De hecho, me alegrará saber por qué.

ambodi
fuente
USE database_nameestablece la base de datos predeterminada para que no necesite calificar los nombres de las tablas en las declaraciones que emita. Aquí puede calificar el columnsnombre de la tabla diciendo que está dentro del esquema de información. table_catalogexiste en mysql simplemente con el propósito de compatibilidad con otros dbs, no es lo mismo que table_schema- vea los comentarios debajo de esa respuesta.
Paul Campbell
3

O use las columnas sys.

--SQL 2005
SELECT  *
FROM    sys.columns
WHERE   OBJECT_NAME(object_id) = 'spt_values'
-- returns 6 rows = 6 columns

--SQL 2000
SELECT  *
FROM    syscolumns
WHERE   OBJECT_NAME(id) = 'spt_values'
-- returns 6 rows = 6 columns

SELECT  *
FROM    dbo.spt_values
    -- 6 columns indeed
jerryhung
fuente
seleccione COUNT (*) de INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '<YOURTABLENAME>'
Rudy Hinojosa
2
SELECT COUNT(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE 
TABLE_CATALOG = 'database_name' AND TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'table_name'
abhid89
fuente
2

Es posible encontrar el número de columnas en una tabla simplemente usando 3 líneas simples de código PHP.

$sql="SELECT * FROM table";
$query=mysqli_query($connect_dude,$sql);    
$num=mysqli_num_fields($query);

$numdevolvería el número de columnsen una tabla dada en este caso.

Con suerte, ayudaría a otros.

Salim Khan
fuente
1

Consulta para contar el número de columnas en una tabla:

select count(*) from user_tab_columns where table_name = 'tablename';

Reemplace tablename con el nombre de la tabla cuyo número total de columnas desea devolver.

Deepak
fuente
¿también es aplicable para MYSQL, porque no puedo ejecutarlo
Hussain Akhtar Wahid 'Ghouri'
1

Puede usar la siguiente instrucción sql:

select count(*) Noofcolumns from SYSCOLUMNS where id=(select id from SYSOBJECTS where name='table_name')
Pranav Shah
fuente
1
SELECT COUNT(*) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE 
   TABLE_NAME = 'table_name';
Aneel Goplani
fuente
Lo mencionado anteriormente debería funcionar para obtener el número de columnas en una tabla especificada en la Base de datos de SQL Server.
Aneel Goplani
1

db2 'describe table "SCHEMA_NAME"."TBL_NAME"'

anask
fuente
1
Si bien esto podría resolver la pregunta original, es mejor incluir una descripción para que sepamos lo que está sucediendo.
Tedinoz
1
No publique solo el código como respuesta, sino que también incluya una explicación de lo que hace su código y cómo resuelve el problema de la pregunta. Las respuestas con una explicación generalmente son de mayor calidad y es más probable que atraigan votos positivos.
Suraj Kumar
0

La siguiente consulta encuentra cómo las columnas en la tabla: -

 SELECT COUNT(COLUMN_NAME) FROM USER_TAB_COLUMNS
 WHERE TABLE_NAME = 'TableName';
Naveen kumar. K
fuente
0

Una respuesta de MySQL se adaptó ligeramente del ejemplo de MSDN para MySqlDataReader.GetValues :

//assumes you've already created a connection, opened it, 
//and executed a query to a reader

while(reader.Read())
{
    Object[] values = new Object[reader.FieldCount];
    int fieldCount = reader.GetValues(values);

    Console.WriteLine("\nreader.GetValues retrieved {0} columns.",   fieldCount);
    for (int i = 0; i < fieldCount; i++)
        Console.WriteLine(values[i]);
}

El uso MySqlDataReader.FieldCountle permitirá recuperar el número de columnas en la fila que ha consultado.

delliottg
fuente
0
SELECT TABLE_SCHEMA
    , TABLE_NAME
    , number = COUNT(*) 
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY TABLE_SCHEMA, TABLE_NAME;

Este me funcionó.

Sumesh Es
fuente
0

Como todas las respuestas están usando COUNT(), también puede usar MAX()para obtener el número de columnas en una tabla específica como

SELECT MAX(ORDINAL_POSITION) NumberOfColumnsInTable
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG = 'YourDatabaseNameHere'
      AND 
      TABLE_SCHEMA = 'YourSchemaNameHere'
      AND
      TABLE_NAME = 'YourTableNameHere';

Ver The INFORMATION_SCHEMA COLUMNS Table

Ilyes
fuente
-1

Así es como puede obtener una serie de columnas de tabla usando Python 3, sqlite3 y la declaración pragma:

con = sqlite3.connect(":memory:")    
con.execute("CREATE TABLE tablename (d1 VARCHAR, d2 VARCHAR)")
cur = con.cursor()
cur.execute("PRAGMA table_info(tablename)")
print(len(cur.fetchall()))

Fuente

Kirill
fuente