Rechercher le nombre de colonnes dans un tableau


122

Il est possible de trouver le nombre de lignes dans un tableau:

select count(*) from tablename

Est-il possible de trouver le nombre de colonnes dans un tableau?

Réponses:


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

1
Salut je ne peux pas comprendre, ici les informations pouvez-vous s'il vous plaît me donner la requête une fois de plus .. table name = post columns = PostingID, PostingDate, Body
praveenjayapal

2
Sauf si je suis confus, vous recherchez le nombre de colonnes dans le tableau. Si vous exécutez la requête suivante, elle renverra 3 (en supposant que les seules colonnes sont PostingId, PostingDate et Body) SELECT COUNT (*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'post'
Nathan Koop

10
Je pense que vous devez remplacer "table_schema" ci-dessus par "TABLE_CATALOG" pour la variable 'database_name'
Harvey Darvey

Dans MySQL land (étiqueté dans la question) ... Un MySQL databaseéquivaut à un schemadans ANSI SQL et le table_catalogest toujoursdef
Steve Buzonas

1
"table_catalog" doit changer en "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
Cette réponse fonctionne parfaitement, au moins avec Microsoft SQL Server
Antonio Serrano

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

Remarque: Your_table_name doit être remplacé par votre nom de table actuel


6

Utilisation de 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);

2
Il s'agit d'une bonne approche générique (indépendante du SGBDR). Je suggère seulement de changer la requête en SELECT * FROM sample2 WHERE 1=2. De cette façon, vous pouvez obtenir le schéma mais pas de données, ce qui pourrait ajouter une surcharge inutile.
Cascader

5

Il a été un peu tard mais s'il vous plaît, prenez-le moi ...

Dans l'éditeur (Nouvelle requête), sélectionnez l'objet de base de données, cela peut aussi être une table.Si nous utilisons la touche de raccourci Alt + F1, nous obtiendrons toutes les informations de l'objet et je pense que cela résoudra également votre problème.


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

4

Eh bien, j'ai essayé la réponse de Nathan Koop et cela n'a pas fonctionné pour moi. Je l'ai changé comme suit et cela a fonctionné:

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

Cela ne fonctionnait pas non plus si je mets USE 'database_name'ni WHERE table_catalog = 'database_name' AND table_name' = 'table_name'. Je serai en fait heureux de savoir pourquoi.


USE database_namedéfinit la base de données par défaut afin que vous n'ayez pas besoin de qualifier les noms de table dans les instructions que vous émettez. Ici, vous qualifiez le columnsnom de la table en disant qu'il est dans le schéma d'information. table_catalogexiste dans mysql uniquement à des fins de compatibilité avec d'autres dbs, ce n'est pas la même chose que table_schema- voir les commentaires sous cette réponse.
Paul Campbell

3

Ou utilisez les 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

sélectionnez COUNT (*) dans 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

Il est possible de trouver le nombre de colonnes dans une table simplement en utilisant 3 simples lignes de code PHP.

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

$numrenverrait le nombre de columnssur une table donnée dans ce cas.

J'espère que cela aiderait les autres.


1

Requête pour compter le nombre de colonnes dans une table:

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

Remplacez tablename par le nom de la table dont vous souhaitez renvoyer le nombre total de colonnes.


est-il également applicable pour MYSQL, car je ne peux pas l'exécuter
Hussain Akhtar Wahid 'Ghouri'

1

Peut utiliser l'instruction SQL suivante:

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';

Les éléments mentionnés ci-dessus devraient fonctionner pour obtenir le nombre de colonnes dans une table spécifiée dans la base de données SQL Server.
Aneel Goplani du

1

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


1
Bien que cela puisse résoudre la question initiale, il est préférable d'inclure une description afin que nous sachions ce qui se passe.
Tedinoz

1
Veuillez ne pas publier uniquement le code comme réponse, mais inclure également une explication de ce que fait votre code et comment il résout le problème de la question. Les réponses avec une explication sont généralement de meilleure qualité et sont plus susceptibles d'attirer des votes positifs.
Suraj Kumar

0

La requête suivante trouve comment les colonnes de la table: -

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

0

Une réponse MySQL légèrement adaptée de l' exemple MSDN pour 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'utilisation MySqlDataReader.FieldCountvous permettra de récupérer le nombre de colonnes dans la ligne que vous avez interrogée.


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

Celui-ci a fonctionné pour moi.


0

Puisque toutes les réponses utilisent COUNT(), vous pouvez également utiliser MAX()pour obtenir le nombre de colonnes dans un tableau spécifique comme

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

Voir The INFORMATION_SCHEMA COLUMNS Table


-1

Voici comment obtenir un certain nombre de colonnes de table à l'aide de l'instruction Python 3, sqlite3 et 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()))

La source

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.