查找表中的列数

时间:2009-03-18 14:10:06

标签: sql mysql

可以在表格中找到行数:

select count(*) from tablename

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

20 个答案:

答案 0 :(得分:182)

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

答案 1 :(得分:34)

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

答案 2 :(得分:4)

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

答案 3 :(得分: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

答案 4 :(得分:3)

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

注意:Your_table_nale替换为您的表名

答案 5 :(得分:3)

它已经很晚了,但请从我这里拿走......

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

答案 6 :(得分:2)

只需使用3行简单的PHP代码就可以找到表中的列数。

$sql="SELECT * FROM table";
$query=mysqli_query($connect_dude,$sql);    
$num=mysqli_num_fields($query);
在这种情况下,

$num会返回给定表格中columns的数量。

希望它能帮助别人。

答案 7 :(得分:2)

好吧,我尝试了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',它也无法奏效。我其实会很高兴知道为什么。

答案 8 :(得分:1)

可以使用以下sql语句:

select count(*) Noofcolumns from SYSCOLUMNS where id=(select id from SYSOBJECTS where name='table_name')

答案 9 :(得分:1)

SELECT COUNT(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE 
TABLE_CATALOG = 'database_name' AND TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'table_name'

答案 10 :(得分:1)

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

答案 11 :(得分:1)

查询计算表中的列数:

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

将tablename替换为要返回的总列数的表的名称。

答案 12 :(得分:0)

以下查询查找表中的列: -

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

答案 13 :(得分:0)

MySQL回答略微改编自MSDN example for 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将允许您检索您查询的行中的列数。

答案 14 :(得分:0)

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

答案 15 :(得分:0)

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

这个对我有用。

答案 16 :(得分: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

答案 17 :(得分:0)

db2 'describe select * from "SCHEMA_NAME"."TBL_NAME"'

答案 18 :(得分:0)

它正在工作(mysql):

SELECT TABLE_NAME , count(COLUMN_NAME)
FROM information_schema.columns
GROUP BY TABLE_NAME 

答案 19 :(得分:-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()))

Source