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?

Praveenjayapal
la source

Réponses:

204
SELECT COUNT(*)
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE table_catalog = 'database_name' -- the database
   AND table_name = 'table_name'
Nathan Koop
la source
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'
kavitha
la source
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

Rahul Yadav
la source
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);
Himanshu
la source
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.

itb564
la source
4
SELECT count(*) FROM information_schema.`COLUMNS` C
WHERE table_name = 'your_table_name'
AND TABLE_SCHEMA = "your_db_name"
Ketul Rathod
la source
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.

ambodi
la source
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
jerryhung
la source
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'
abhid89
la source
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.

Salim Khan
la source
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.

Deepak
la source
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')
Pranav Shah
la source
1
SELECT COUNT(*) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE 
   TABLE_NAME = 'table_name';
Aneel Goplani
la source
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"'

anask
la source
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';
Naveen kumar. K
la source
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.

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

Celui-ci a fonctionné pour moi.

Sumesh Es
la source
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

Ilyes
la source
-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

Kirill
la source