Trova il numero di colonne in una tabella


122

È possibile trovare il numero di righe in una tabella:

select count(*) from tablename

È possibile trovare il numero di colonne in una tabella?

Risposte:


204
SELECT COUNT(*)
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE table_catalog = 'database_name' -- the database
   AND table_name = 'table_name'

1
Ciao non riesco a capire, qui le informazioni puoi per favore dammi la query ancora una volta .. nome tabella = colonne post = PostingID, PostingDate, Body
praveenjayapal

2
A meno che non sia confuso, stai cercando quante colonne ci sono nella tabella. Se esegui la seguente query, restituirà 3 (supponendo che le uniche colonne siano PostingId, PostingDate e Body) SELEZIONA COUNT (*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'post'
Nathan Koop

10
Penso che tu debba sostituire "table_schema" sopra con "TABLE_CATALOG" per la variabile 'database_name'
Harvey Darvey,

In MySQL land (etichettato nella domanda) ... Un MySQL databaseè equivalente a un schemain ANSI SQL ed table_catalogè sempredef
Steve Buzonas

1
"table_catalog" deve cambiare in "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'

1
Questa risposta funziona perfettamente, almeno con Microsoft SQL Server
Antonio Serrano

8
SELECT count(*)
FROM information_schema.columns
WHERE table_name = 'Your_table_name';

Nota: Your_table_name dovrebbe essere sostituito dal nome effettivo della tabella


6

Utilizzo di JDBC in 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);

2
Questo è un buon approccio generico (RDBMS agnostico). Suggerisco solo di cambiare la query in SELECT * FROM sample2 WHERE 1=2. In questo modo, puoi ottenere lo schema ma nessun dato, il che potrebbe aggiungere un sovraccarico non necessario.
Cascader

5

È stato un po 'tardi ma per favore prendilo da me ...

Nell'editor (New Query) selezionando l'oggetto database può essere anche una tabella, se usiamo il tasto di scelta rapida Alt + F1 avremo tutte le informazioni dell'oggetto e penso che risolverà anche il tuo problema.


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

4

Beh, ho provato la risposta di Nathan Koop e non ha funzionato per me. L'ho cambiato nel seguente e ha funzionato:

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

Inoltre non ha funzionato se ho messo USE 'database_name'nor WHERE table_catalog = 'database_name' AND table_name' = 'table_name'. Veramente sarò felice di sapere perché.


USE database_nameimposta il database predefinito in modo che non sia necessario qualificare i nomi delle tabelle in nessuna istruzione emessa. Qui qualifichi il columnsnome della tabella dicendo che è all'interno di information_schema. table_catalogesiste in mysql puramente allo scopo di compatibilità con altri db non è lo stesso di table_schema- vedere i commenti sotto quella risposta.
Paul Campbell

3

Oppure usa 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

seleziona COUNT (*) da 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'

2

È possibile trovare il numero di colonne in una tabella semplicemente utilizzando 3 semplici righe di codice PHP.

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

$num restituirebbe il numero di columns su una determinata tabella in questo caso.

Si spera che possa aiutare gli altri.


1

Query per contare il numero di colonne in una tabella:

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

Sostituisci tablename con il nome della tabella di cui desideri restituire il numero totale di colonne.


è applicabile anche a MYSQL, perché non posso eseguirlo
Hussain Akhtar Wahid 'Ghouri'

1

Può ottenere utilizzando la seguente istruzione sql:

select count(*) Noofcolumns from SYSCOLUMNS where id=(select id from SYSOBJECTS where name='table_name')

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

Quanto sopra dovrebbe funzionare per ottenere il numero di colonne in una tabella specificata nel database di SQL Server.
Aneel Goplani

1

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


1
Anche se questo potrebbe risolvere la domanda originale, è meglio includere una descrizione in modo da sapere cosa sta succedendo.
Tedinoz

1
Si prega di non pubblicare solo il codice come risposta, ma includere anche una spiegazione di ciò che fa il codice e di come risolve il problema della domanda. Le risposte con una spiegazione sono generalmente di qualità superiore e hanno maggiori probabilità di attirare voti positivi.
Suraj Kumar

0

La seguente query trova come le colonne nella tabella: -

 SELECT COUNT(COLUMN_NAME) FROM USER_TAB_COLUMNS
 WHERE TABLE_NAME = 'TableName';

0

Una risposta MySQL adattata leggermente dall'esempio MSDN per 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]);
}

L'utilizzo MySqlDataReader.FieldCountti consentirà di recuperare il numero di colonne nella riga che hai richiesto.


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

Questo ha funzionato per me.


0

Poiché tutte le risposte utilizzano COUNT(), puoi anche utilizzare MAX()per ottenere il numero di colonne in una tabella specifica come

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

Vedere The INFORMATION_SCHEMA COLUMNS Table


-1

Ecco come puoi ottenere un numero di colonne di tabella utilizzando Python 3, sqlite3 e l'istruzione 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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.