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?

praveenjayapal
quelle

Antworten:

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

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

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

ambodi
quelle
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
Jerryhung
quelle
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'
abhid89
quelle
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.

Salim Khan
quelle
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.

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

anask
quelle
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';
Naveen Kumar. K.
quelle
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.

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

Dieser hat für mich gearbeitet.

Sumesh Es
quelle
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

Ilyes
quelle
-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

Kirill
quelle