查找表中的列数

pra*_*pal 115 mysql sql

可以在表中找到行数:

select count(*) from tablename
Run Code Online (Sandbox Code Playgroud)

是否可以找到表中的列数?

Nat*_*oop 197

SELECT COUNT(*)
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE table_catalog = 'database_name' -- the database
   AND table_name = 'table_name'
Run Code Online (Sandbox Code Playgroud)

  • 我认为您需要将"table_schema"替换为"TABLE_CATALOG"以获取变量"database_name" (10认同)
  • “table_catalog”需要更改为“TABLE_SCHEMA” (4认同)
  • 除非我感到困惑,否则您正在寻找表中有多少列.如果执行以下查询,它将返回3(假设唯一的列是PostingId,PostingDate和Body)SELECT COUNT(*)FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name ='post' (2认同)

小智 36

SELECT COUNT(COLUMN_NAME) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE 
    TABLE_CATALOG = 'Database name' 
    AND TABLE_SCHEMA = 'dbo' 
    AND TABLE_NAME = 'table name'
Run Code Online (Sandbox Code Playgroud)


Hic*_*Sfh 7

它正在工作(mysql):

SELECT TABLE_NAME , count(COLUMN_NAME)
FROM information_schema.columns
GROUP BY TABLE_NAME 
Run Code Online (Sandbox Code Playgroud)

  • 在 Postgresql 中添加 `where TABLE_SCHEMA = 'public'` 对我来说效果很好 (2认同)

itb*_*564 5

有点晚了,但请把它从我这里拿走...

在编辑器(新查询)中通过选择数据库对象它也可以是一个表,如果我们使用快捷键Alt+F1我们将获得该对象的所有信息,我认为也可以解决您的问题。


Him*_*shu 5

在Java中使用JDBC:

    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);
Run Code Online (Sandbox Code Playgroud)

  • 这是一种很好的通用方法(与RDBMS无关)。我只建议将查询更改为“ SELECT * FROM sample2 WHERE 1 = 2”。这样,您可以获得模式,但没有数据,这可能会增加不必要的开销。 (2认同)

amb*_*odi 5

好吧,我尝试了 Nathan Koop 的回答,但对我不起作用。我将其更改为以下内容并且确实有效:

SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'table_name'
Run Code Online (Sandbox Code Playgroud)

如果我把USE 'database_name'nor 也行不通WHERE table_catalog = 'database_name' AND table_name' = 'table_name'。我实际上会很高兴知道为什么。


Rah*_*dav 5

SELECT count(*)
FROM information_schema.columns
WHERE table_name = 'Your_table_nale';
Run Code Online (Sandbox Code Playgroud)

注意:Your_table_nale用您的表名替换