Encontre o número de colunas em uma tabela

122

É possível encontrar o número de linhas em uma tabela:

select count(*) from tablename

É possível encontrar o número de colunas em uma tabela?

praveenjayapal
fonte

Respostas:

204
SELECT COUNT(*)
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE table_catalog = 'database_name' -- the database
   AND table_name = 'table_name'
Nathan Koop
fonte
1
Oi eu não posso ficar de pé, aqui as informações podem me dar a consulta mais uma vez .. nome da tabela = post colunas = PostingID, PostingDate, Body #
19409
2
A menos que eu esteja confuso, você está procurando quantas colunas estão na tabela. Se você executar a seguinte consulta, ele retornará 3 (assumindo que as únicas colunas são postagem, PostingDate e Corpo) SELECT COUNT (*) FROM INFORMATION_SCHEMA.COLUMNS onde table_name = 'post'
Nathan Koop
10
Acho que você precisa para substituir "table_schema" acima com "TABLE_CATALOG" para o 'database_name' variável
Harvey Darvey
No MySQL terra (marcado em questão) ... A MySQL databaseé equivalente a um schemaem ANSI SQL e table_catalogé sempredef
Steve Buzonas
1
"table_catalog" precisa mudar para "TABLE_SCHEMA"
Chamara Maduranga 14/11/19
39
SELECT COUNT(COLUMN_NAME) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE 
    TABLE_CATALOG = 'Database name' 
    AND TABLE_SCHEMA = 'dbo' 
    AND TABLE_NAME = 'table name'
kavitha
fonte
1
Esta resposta funciona perfeitamente, pelo menos com o Microsoft SQL Server
Antonio Serrano
8
SELECT count(*)
FROM information_schema.columns
WHERE table_name = 'Your_table_name';

Nota: Your_table_name deve ser substituído pelo nome da tabela real

Rahul Yadav
fonte
6

Usando JDBC em 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
fonte
2
Essa é uma boa abordagem genérica (independente de RDBMS). Eu apenas sugiro alterar a consulta para SELECT * FROM sample2 WHERE 1=2. Dessa forma, você pode obter o esquema, mas nenhum dado, o que poderia adicionar sobrecarga desnecessária.
Cascader
5

Tem sido um pouco tarde, mas por favor tire isso de mim ...

No editor (Nova consulta), selecione o objeto de banco de dados e também pode ser uma tabela. Se usarmos a tecla de atalho Alt + F1 , obteremos todas as informações do objeto e acho que resolveremos o seu problema também.

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

Bem, eu tentei a resposta de Nathan Koop e não funcionou para mim. Eu mudei para o seguinte e funcionou:

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

Também não funcionou se eu colocar USE 'database_name'nem WHERE table_catalog = 'database_name' AND table_name' = 'table_name'. Na verdade, ficarei feliz em saber o porquê.

ambodi
fonte
USE database_namedefine o banco de dados padrão para que você não precise qualificar os nomes das tabelas em nenhuma instrução emitida. Aqui você qualifica o columnsnome da tabela dizendo que está dentro do information_schema. table_catalogexiste no mysql apenas para fins de compatibilidade com outros dbs não é o mesmo que table_schema- veja os comentários sob essa resposta.
Paul Campbell
3

Ou use o sys.columns

--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
fonte
selecione COUNT (*) em 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
fonte
2

É possível encontrar o número de colunas em uma tabela usando apenas três linhas simples de código PHP.

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

$numretornaria o número de columnsem uma determinada tabela neste caso.

Felizmente, isso ajudaria outros.

Salim Khan
fonte
1

Consulta para contar o número de colunas em uma tabela:

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

Substitua tablename pelo nome da tabela cujo número total de colunas você deseja retornar.

Deepak
fonte
é também aplicável ao MYSQL, porque eu não posso executá-lo
Hussain Akhtar Wahid 'Ghouri' 13/12/12
1

Pode obter usando a seguinte instrução sql:

select count(*) Noofcolumns from SYSCOLUMNS where id=(select id from SYSOBJECTS where name='table_name')
Pranav Shah
fonte
1
SELECT COUNT(*) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE 
   TABLE_NAME = 'table_name';
Aneel Goplani
fonte
O mencionado acima deve funcionar para obter o número de colunas em uma tabela especificada no Banco de Dados do SQL Server.
Aneel Goplani
1

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

anask
fonte
1
Embora isso possa resolver a questão original, é melhor incluir uma descrição para que possamos saber o que está acontecendo.
Tedinoz 24/03
1
Não publique apenas o código como resposta, mas também inclua uma explicação do que seu código faz e como ele resolve o problema da pergunta. As respostas com uma explicação geralmente são de qualidade superior e têm maior probabilidade de atrair votos positivos.
Suraj Kumar
0

A consulta a seguir localiza como as colunas na tabela: -

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

Uma resposta do MySQL adaptada levemente do exemplo do 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]);
}

O uso MySqlDataReader.FieldCountpermitirá recuperar o número de colunas na linha que você consultou.

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

Este funcionou para mim.

Sumesh Es
fonte
0

Como todas as respostas estão sendo COUNT()usadas, você também pode usar MAX()para obter o número de colunas em uma tabela específica como

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

Vejo The INFORMATION_SCHEMA COLUMNS Table

Ilyes
fonte
-1

Aqui está como você pode obter várias colunas de tabela usando a instrução Python 3, sqlite3 e 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()))

Fonte

Kirill
fonte