Temukan jumlah kolom dalam tabel


122

Jumlah baris dalam tabel dapat ditemukan:

select count(*) from tablename

Apakah mungkin menemukan jumlah kolom dalam sebuah tabel?

Jawaban:


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

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'

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


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

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.


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

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.


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

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'

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.


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.


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

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

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


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

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.


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

Yang ini berhasil untuk saya.


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


-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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.