Tìm số cột trong bảng


122

Có thể tìm số hàng trong bảng:

select count(*) from tablename

Có thể tìm số cột trong bảng không?

Câu trả lời:


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

1
Hi i cant dưới chân đế, ở đây các thông tin có thể giúp bạn xin vui lòng cho tôi truy vấn một lần nữa .. tên bảng = cột post = PostingID, PostingDate, Body
praveenjayapal

2
Trừ khi tôi nhầm lẫn, bạn đang tìm kiếm có bao nhiêu cột trong bảng. Nếu bạn thực hiện các truy vấn sau đây, nó sẽ trở lại 3 (giả sử các cột chỉ là PostingId, PostingDate và Body) SELECT COUNT (*) FROM tên_bảng information_schema ĐÂU = 'post'
Nathan Koop

10
Tôi nghĩ rằng bạn cần thay thế "table_schema" ở trên bằng "TABLE_CATALOG" cho biến 'database_name'
Harvey Darvey

Trong đất MySQL (gắn thẻ trong câu hỏi) ... Một MySQL databaselà tương đương với một schematrong ANSI SQL và table_catalogluôn luôn làdef
Steve Buzonas

1
"table_catalog" cần thay đổi thành "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
Câu trả lời này hoạt động hoàn hảo, ít nhất là với Microsoft SQL Server
Antonio Serrano

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

Lưu ý: Your_table_name nên được thay thế bằng tên bảng thực của bạn


6

Sử dụng JDBC trong 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
Đây là một cách tiếp cận chung tốt (bất khả tri RDBMS). Tôi chỉ đề nghị thay đổi truy vấn thành SELECT * FROM sample2 WHERE 1=2. Bằng cách này, bạn có thể nhận được lược đồ nhưng không có dữ liệu, điều này có thể thêm chi phí không cần thiết.
Cascader

5

Đã hơi muộn nhưng xin hãy lấy nó khỏi tay tôi ...

Trong trình soạn thảo (Truy vấn mới) bằng cách chọn đối tượng cơ sở dữ liệu, nó cũng có thể là một bảng, nếu chúng ta sử dụng Phím tắt Alt + F1, chúng ta sẽ nhận được tất cả thông tin của đối tượng và tôi nghĩ sẽ giải quyết được vấn đề của bạn.


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

4

Tôi đã thử câu trả lời của Nathan Koop và nó không hiệu quả với tôi. Tôi đã thay đổi nó thành như sau và nó đã hoạt động:

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

Nó cũng không hoạt động nếu tôi đặt USE 'database_name'cũng không WHERE table_catalog = 'database_name' AND table_name' = 'table_name'. Tôi thực sự sẽ rất vui khi biết tại sao.


SỬ DỤNG database_nameđặt cơ sở dữ liệu mặc định để bạn không cần đặt tên bảng đủ điều kiện trong bất kỳ câu lệnh nào bạn đưa ra. Ở đây, bạn đủ điều kiện cho columnstên bảng bằng cách nói rằng nó nằm trong information_schema. table_catalogtồn tại trong mysql hoàn toàn với mục đích tương thích với các dbs khác, nó không giống như table_schema- xem các nhận xét dưới câu trả lời đó.
Paul Campbell

3

Hoặc sử dụng 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

chọn COUNT (*) từ 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

Có thể tìm số cột trong bảng chỉ bằng cách sử dụng 3 dòng mã PHP đơn giản.

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

$numsẽ trả về số columnstrên một bảng nhất định trong trường hợp này.

Hy vọng rằng nó sẽ giúp ích cho những người khác.


1

Truy vấn đếm số cột trong bảng:

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

Thay thế tên bảng bằng tên của bảng có tổng số cột bạn muốn trả về.


nó cũng có thể áp dụng cho MYSQL, vì tôi không thể thực thi nó
Hussain Akhtar Wahid 'Ghouri'

1

Có thể sử dụng câu lệnh sql sau:

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

Phần được đề cập ở trên sẽ hoạt động để lấy số cột trong một bảng được chỉ định trong Cơ sở dữ liệu SQL Server.
Aneel Goplani

1

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


1
Mặc dù điều này có thể giải quyết câu hỏi ban đầu, nhưng tốt nhất bạn nên bao gồm mô tả để chúng tôi biết điều gì đang xảy ra.
Tedinoz

1
Vui lòng không chỉ đăng mã dưới dạng câu trả lời, mà hãy bao gồm giải thích về chức năng của mã và cách nó giải quyết vấn đề của câu hỏi. Các câu trả lời kèm theo lời giải thích thường có chất lượng cao hơn và có nhiều khả năng thu hút sự ủng hộ hơn.
Suraj Kumar

0

Truy vấn sau tìm cách các cột trong bảng: -

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

0

Một câu trả lời MySQL được điều chỉnh một chút từ ví dụ MSDN cho 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]);
}

Việc sử dụng MySqlDataReader.FieldCountsẽ cho phép bạn truy xuất số cột trong hàng mà bạn đã truy vấn.


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

Điều này đã làm việc cho tôi.


0

Vì tất cả các câu trả lời đều đang sử dụng COUNT(), bạn cũng có thể sử dụng MAX()để lấy số cột trong một bảng cụ thể như

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

Xem The INFORMATION_SCHEMA COLUMNS Table


-1

Đây là cách bạn có thể lấy một số cột bảng bằng cách sử dụng Python 3, sqlite3 và câu lệnh 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()))

Nguồn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.