Suchen Sie die Anzahl der Spalten in einer Tabelle


122

Es ist möglich, die Anzahl der Zeilen in einer Tabelle zu ermitteln:

select count(*) from tablename

Ist es möglich, die Anzahl der Spalten in einer Tabelle zu ermitteln?

Antworten:


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

1
Hallo, ich kann es nicht verstehen, hier die Informationen können Sie mir bitte noch einmal die Frage geben .. Tabellenname = Post Spalten = PostingID, PostingDate, Body
praveenjayapal

2
Sofern ich nicht verwirrt bin, suchen Sie nach der Anzahl der Spalten in der Tabelle. Wenn Sie die folgende Abfrage ausführen, wird 3 zurückgegeben (vorausgesetzt, die einzigen Spalten sind PostingId, PostingDate und Body). SELECT COUNT (*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'post'
Nathan Koop

10
Ich denke, Sie müssen "table_schema" oben durch "TABLE_CATALOG" für die Variable 'database_name' ersetzen
Harvey Darvey

In MySQL Land (in der Frage markiert) ... Ein MySQL databaseentspricht einem schemain ANSI SQL und das table_catalogist immerdef
Steve Buzonas

1
"table_catalog" muss in "TABLE_SCHEMA" geändert werden
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
Diese Antwort funktioniert perfekt, zumindest mit Microsoft SQL Server
Antonio Serrano

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

Hinweis: Ihr_Tabellenname sollte durch Ihren tatsächlichen Tabellennamen ersetzt werden


6

Verwenden von 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
Dies ist ein guter generischer Ansatz (RDBMS-Agnostiker). Ich schlage nur vor, die Abfrage in zu ändern SELECT * FROM sample2 WHERE 1=2. Auf diese Weise können Sie das Schema abrufen, jedoch keine Daten, was zu unnötigem Overhead führen kann.
Cascader

5

Es ist etwas spät, aber bitte nimm es von mir ...

Wenn Sie im Editor (Neue Abfrage) das Datenbankobjekt auswählen , kann es sich auch um eine Tabelle handeln. Wenn Sie die Tastenkombination Alt + F1 verwenden , erhalten Sie alle Informationen zum Objekt, und ich denke, dies wird auch Ihr Problem lösen.


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

4

Nun, ich habe Nathan Koops Antwort ausprobiert und es hat bei mir nicht funktioniert. Ich habe es wie folgt geändert und es hat funktioniert:

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

Es hat auch nicht funktioniert, wenn ich USE 'database_name'noch sagte WHERE table_catalog = 'database_name' AND table_name' = 'table_name'. Ich werde mich tatsächlich freuen zu wissen warum.


USE database_namelegt die Standarddatenbank fest, sodass Sie Tabellennamen in den von Ihnen ausgegebenen Anweisungen nicht qualifizieren müssen. Hier qualifizieren Sie den columnsTabellennamen, indem Sie sagen, dass er im Informationsschema enthalten ist. table_catalogexistiert in MySQL nur aus Gründen der Kompatibilität mit anderen DBs. Es ist nicht dasselbe wie table_schema- siehe die Kommentare unter dieser Antwort.
Paul Campbell

3

Oder verwenden Sie die 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

Wählen Sie COUNT (*) aus 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

Es ist möglich, die Anzahl der Spalten in einer Tabelle mithilfe von 3 einfachen Zeilen PHP-Code zu ermitteln.

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

$numwürde columnsin diesem Fall die Nummer von auf einer bestimmten Tabelle zurückgeben.

Hoffentlich würde es anderen helfen.


1

Abfrage zum Zählen der Anzahl der Spalten in einer Tabelle:

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

Ersetzen Sie den Tabellennamen durch den Namen der Tabelle, deren Gesamtzahl der Spalten zurückgegeben werden soll.


ist es auch für MYSQL anwendbar, weil ich es nicht ausführen kann
Hussain Akhtar Wahid 'Ghouri'

1

Kann mit folgender SQL-Anweisung erhalten:

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

Die oben genannten Informationen sollten funktionieren, um die Anzahl der Spalten in einer angegebenen Tabelle in der SQL Server-Datenbank abzurufen.
Aneel Goplani

1

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


1
Dies könnte zwar die ursprüngliche Frage lösen, es ist jedoch am besten, eine Beschreibung beizufügen, damit wir wissen, was los ist.
Tedinoz

1
Bitte posten Sie nicht nur Code als Antwort, sondern geben Sie auch eine Erklärung an, was Ihr Code tut und wie er das Problem der Frage löst. Antworten mit einer Erklärung sind normalerweise von höherer Qualität und ziehen eher positive Stimmen an.
Suraj Kumar

0

Die folgende Abfrage ermittelt, wie Spalten in der Tabelle: -

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

0

Eine MySQL-Antwort, die leicht an das MSDN-Beispiel für MySqlDataReader.GetValues ​​angepasst wurde :

//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]);
}

Mit MySqlDataReader.FieldCountkönnen Sie die Anzahl der Spalten in der von Ihnen abgefragten Zeile abrufen.


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

Dieser hat für mich gearbeitet.


0

Da alle Antworten verwendet werden COUNT(), können Sie auch MAX()die Anzahl der Spalten in einer bestimmten Tabelle als ermitteln

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

Sehen The INFORMATION_SCHEMA COLUMNS Table


-1

So können Sie mit Python 3, sqlite3 und der Pragma-Anweisung eine Reihe von Tabellenspalten abrufen:

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()))

Quelle

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.