Temukan jumlah kolom dalam tabel

122

Jumlah baris dalam tabel dapat ditemukan:

select count(*) from tablename

Apakah mungkin menemukan jumlah kolom dalam sebuah tabel?

praveenjayapal
sumber

Jawaban:

204
SELECT COUNT(*)
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE table_catalog = 'database_name' -- the database
   AND table_name = 'table_name'
Nathan Koop
sumber
1
Hi i cant under stand, di sini informasinya dapatkah Anda memberi saya pertanyaan sekali lagi .. table name = post kolom = PostingID, PostingDate, Body
praveenjayapal
2
Kecuali saya bingung, Anda mencari berapa banyak kolom di tabel. Jika Anda menjalankan kueri berikut, ini akan mengembalikan 3 (dengan asumsi kolom hanya PostingId, PostingDate dan Body) SELECT COUNT (*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'post'
Nathan Koop
10
Saya pikir Anda perlu mengganti "table_schema" di atas dengan "TABLE_CATALOG" untuk variabel 'database_name'
Harvey Darvey
Di tanah MySQL (ditandai di pertanyaan) ... MySQL databasesetara dengan schemadi ANSI SQL dan table_catalogselaludef
Steve Buzonas
1
"table_catalog" perlu diubah menjadi "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
sumber
1
Jawaban ini bekerja dengan sempurna, setidaknya dengan Microsoft SQL Server
Antonio Serrano
8
SELECT count(*)
FROM information_schema.columns
WHERE table_name = 'Your_table_name';

Catatan: Nama_tabelAnda harus diganti dengan nama tabel Anda yang sebenarnya

Rahul Yadav
sumber
6

Menggunakan JDBC di 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
sumber
2
Ini adalah pendekatan umum yang baik (RDBMS agnostik). Saya hanya menyarankan untuk mengubah kueri menjadi SELECT * FROM sample2 WHERE 1=2. Dengan cara ini, Anda bisa mendapatkan skema tetapi tidak ada data, yang dapat menambah overhead yang tidak diperlukan.
Cascader
5

Sudah sedikit terlambat tapi tolong ambillah dari saya ...

Di editor (New Query) dengan memilih objek database dapat menjadi tabel juga, jika kita menggunakan Tombol Pintasan Alt + F1 kita akan mendapatkan semua informasi dari objek dan saya pikir akan menyelesaikan masalah Anda juga.

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

Saya mencoba jawaban Nathan Koop dan tidak berhasil untuk saya. Saya mengubahnya menjadi yang berikut dan berhasil:

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

Itu juga tidak berhasil jika saya meletakkan USE 'database_name'atau WHERE table_catalog = 'database_name' AND table_name' = 'table_name'. Saya sebenarnya akan senang mengetahui alasannya.

ambodi
sumber
USE database_namemenyetel database default sehingga Anda tidak perlu memasukkan nama tabel dalam pernyataan apa pun yang Anda keluarkan. Di sini Anda memenuhi syarat columnsnama tabel dengan mengatakannya di dalam information_schema. table_catalogada di mysql murni untuk tujuan kompatibilitas dengan dbs lain itu tidak sama dengan table_schema- lihat komentar di bawah jawaban itu.
Paul Campbell
3

Atau gunakan 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
sumber
pilih JUMLAH (*) dari 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
sumber
2

Anda dapat menemukan jumlah kolom dalam tabel hanya dengan menggunakan 3 baris kode PHP sederhana.

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

$num akan mengembalikan jumlah columns pada tabel tertentu dalam kasus ini.

Semoga bisa membantu sesama.

Salim Khan
sumber
1

Query untuk menghitung jumlah kolom dalam sebuah tabel:

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

Ganti tablename dengan nama tabel yang jumlah kolomnya ingin Anda kembalikan.

Deepak
sumber
apakah itu juga berlaku untuk MYSQL, karena saya tidak dapat mengeksekusinya
Hussain Akhtar Wahid 'Ghouri'
1

Bisa menggunakan pernyataan sql berikut:

select count(*) Noofcolumns from SYSCOLUMNS where id=(select id from SYSOBJECTS where name='table_name')
Pranav Shah
sumber
1
SELECT COUNT(*) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE 
   TABLE_NAME = 'table_name';
Aneel Goplani
sumber
Yang disebutkan di atas harus berfungsi untuk mendapatkan jumlah kolom dalam tabel tertentu di Database SQL Server.
Aneel Goplani
1

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

anask
sumber
1
Meskipun ini mungkin menyelesaikan pertanyaan awal, yang terbaik adalah menyertakan deskripsi sehingga kami tahu apa yang sedang terjadi.
Tedinoz
1
Harap jangan hanya memposting kode sebagai jawaban, tetapi sertakan juga penjelasan tentang fungsi kode Anda dan bagaimana kode tersebut menyelesaikan masalah pertanyaan. Jawaban dengan penjelasan biasanya berkualitas lebih tinggi dan lebih cenderung menarik suara positif.
Suraj Kumar
0

Kueri berikut menemukan bagaimana kolom dalam tabel: -

 SELECT COUNT(COLUMN_NAME) FROM USER_TAB_COLUMNS
 WHERE TABLE_NAME = 'TableName';
Naveen kumar. K
sumber
0

Jawaban MySQL diadaptasi sedikit dari contoh MSDN untuk 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]);
}

Menggunakan MySqlDataReader.FieldCountakan memungkinkan Anda untuk mendapatkan kembali jumlah kolom di baris yang Anda tanyakan.

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

Yang ini berhasil untuk saya.

Sumesh Es
sumber
0

Karena semua jawaban digunakan COUNT(), Anda juga dapat menggunakan MAX()untuk mendapatkan jumlah kolom dalam tabel tertentu sebagai

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

Lihat The INFORMATION_SCHEMA COLUMNS Table

Ilyes
sumber
-1

Berikut adalah bagaimana Anda bisa mendapatkan sejumlah kolom tabel menggunakan pernyataan Python 3, sqlite3 dan 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()))

Sumber

Kirill
sumber