ค้นหาจำนวนคอลัมน์ในตาราง


122

เป็นไปได้ที่จะค้นหาจำนวนแถวในตาราง:

select count(*) from tablename

เป็นไปได้ไหมที่จะหาจำนวนคอลัมน์ในตาราง

คำตอบ:


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

1
สวัสดีฉันไม่สามารถยืนได้ข้อมูลที่นี่ช่วยให้ฉันสอบถามอีกครั้งได้ไหม .. table name = post Column = PostingID, PostingDate, Body
praveenjayapal

2
ถ้าฉันไม่สับสนคุณกำลังมองหาจำนวนคอลัมน์ในตาราง หากคุณดำเนินการค้นหาต่อไปนี้จะส่งคืน 3 (สมมติว่าคอลัมน์เดียวคือ PostingId, PostingDate และ Body) SELECT COUNT (*) จาก INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'post'
Nathan Koop

10
ฉันคิดว่าคุณต้องแทนที่ "table_schema" ด้านบนด้วย "TABLE_CATALOG" สำหรับตัวแปร "database_name"
Harvey Darvey

ใน MySQL land (ติดแท็กในคำถาม) ... MySQL databaseเทียบเท่ากับschemaANSI SQL และtable_catalogเสมอdef
Steve Buzonas

1
"table_catalog" ต้องเปลี่ยนเป็น "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
คำตอบนี้ใช้ได้อย่างสมบูรณ์อย่างน้อยกับ Microsoft SQL Server
Antonio Serrano


6

การใช้ JDBC ใน 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
นี่เป็นวิธีการทั่วไปที่ดี (RDBMS ไม่เชื่อเรื่องพระเจ้า) ฉันแนะนำให้เปลี่ยนแบบสอบถามเป็นSELECT * FROM sample2 WHERE 1=2เท่านั้น ด้วยวิธีนี้คุณจะได้รับสคีมา แต่ไม่มีข้อมูลซึ่งสามารถเพิ่มค่าโสหุ้ยที่ไม่จำเป็นได้
Cascader

5

มันสายไปหน่อย แต่ช่วยเอาไปจากฉัน ...

ในตัวแก้ไข (แบบสอบถามใหม่) โดยเลือกวัตถุฐานข้อมูลอาจเป็นตารางได้เช่นกันถ้าเราใช้ปุ่มลัดAlt + F1เราจะได้รับข้อมูลทั้งหมดของวัตถุและฉันคิดว่าจะแก้ปัญหาของคุณได้เช่นกัน



4

ฉันลองคำตอบของ Nathan Koop แล้ว แต่มันก็ไม่ได้ผลสำหรับฉัน ฉันเปลี่ยนเป็นดังต่อไปนี้และใช้งานได้:

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

มันก็ไม่ได้ผลเช่นกันถ้าฉันใส่USE 'database_name'หรือWHERE table_catalog = 'database_name' AND table_name' = 'table_name'ไม่ ฉันยินดีที่จะรู้ว่าทำไม


USE database_nameตั้งค่าฐานข้อมูลเริ่มต้นดังนั้นคุณจึงไม่จำเป็นต้องกำหนดชื่อตารางในคำสั่งใด ๆ ที่คุณออก ที่นี่คุณมีคุณสมบัติเหมาะสมกับcolumnsชื่อตารางโดยระบุว่าอยู่ใน information_schema table_catalogมีอยู่ใน mysql โดยมีวัตถุประสงค์เพื่อให้เข้ากันได้กับ dbs อื่น ๆ ซึ่งไม่เหมือนกับtable_schema- ดูความคิดเห็นใต้คำตอบนั้น
Paul Campbell

3

หรือใช้ 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

เลือก COUNT (*) จาก 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

เป็นไปได้ที่จะค้นหาจำนวนคอลัมน์ในตารางโดยใช้โค้ด PHP ง่ายๆ 3 บรรทัด

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

$numจะส่งคืนจำนวนcolumnsบนตารางที่กำหนดในกรณีนี้

หวังว่ามันจะช่วยคนอื่น ๆ


1

แบบสอบถามเพื่อนับจำนวนคอลัมน์ในตาราง:

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

แทนที่ชื่อตารางด้วยชื่อของตารางที่มีจำนวนคอลัมน์ทั้งหมดที่คุณต้องการส่งคืน


มันใช้ได้กับ MYSQL หรือไม่เพราะฉันไม่สามารถดำเนินการได้
Hussain Akhtar Wahid 'Ghouri'


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

สิ่งที่กล่าวมาข้างต้นควรใช้เพื่อรับจำนวนคอลัมน์ในตารางที่ระบุในฐานข้อมูล SQL Server
Aneel Goplani

1

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


1
แม้ว่าวิธีนี้จะช่วยแก้คำถามเดิมได้ แต่ควรใส่คำอธิบายเพื่อให้เราทราบว่าเกิดอะไรขึ้น
Tedinoz

1
โปรดอย่าโพสต์โค้ดเพื่อเป็นคำตอบเท่านั้น แต่ยังรวมถึงคำอธิบายว่าโค้ดของคุณทำหน้าที่อะไรและแก้ไขปัญหาของคำถามได้อย่างไร คำตอบที่มีคำอธิบายมักจะมีคุณภาพสูงกว่าและมีแนวโน้มที่จะดึงดูดการโหวตได้มากกว่า
Suraj Kumar

0

แบบสอบถามต่อไปนี้พบว่าคอลัมน์ในตารางเป็นอย่างไร: -

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

0

คำตอบ MySQL ดัดแปลงเล็กน้อยจากตัวอย่าง MSDN สำหรับ 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]);
}

การใช้MySqlDataReader.FieldCountจะช่วยให้คุณสามารถดึงข้อมูลจำนวนคอลัมน์ในแถวที่คุณสืบค้นได้


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

อันนี้ใช้ได้ผลสำหรับฉัน


0

เนื่องจากมีการใช้คำตอบทั้งหมดCOUNT()คุณจึงสามารถใช้MAX()เพื่อรับจำนวนคอลัมน์ในตารางเฉพาะได้เช่นกัน

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

ดู The INFORMATION_SCHEMA COLUMNS Table


-1

นี่คือวิธีที่คุณจะได้รับจำนวนคอลัมน์ตารางโดยใช้คำสั่ง Python 3, sqlite3 และ 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()))

แหล่ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.