查找表中的列数

我想知道是否有可能找到一个表中的行数和列数。

SELECT COUNT(*)
FROM tablename
551379 次浏览
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_catalog = 'database_name' -- the database
AND table_name = 'table_name'

或者使用 sys.column

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

已经有点晚了,但请从我这里拿走它..。

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

用于计算表中列数的查询:

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

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

在 Java 中使用 JDBC:

    String quer="SELECT * FROM sample2 where 1=2";
    

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

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

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

可以使用以下 sql 语句:

select count(*) Noofcolumns from SYSCOLUMNS where id=(select id from SYSOBJECTS where name='table_name')
SELECT COUNT(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE
TABLE_CATALOG = 'database_name' AND TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'table_name'

MySQL 的答案略微改编自 用于 MySqlDataReader.GetValue 的 MSDN 示例:

//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将允许您检索所查询的行中的列数。

SELECT count(*) FROM information_schema.`COLUMNS` C
WHERE table_name = 'your_table_name'
AND TABLE_SCHEMA = "your_db_name"
SELECT COUNT(COLUMN_NAME)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_CATALOG = 'Database name'
AND TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'table name'

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

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

在这种情况下,$num将返回给定表上的 columns编号。

希望能帮到其他人。

我试过 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'。我实际上会很高兴知道为什么。

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

注意: 您的 _ table _ name 应该替换为您的实际表名

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

这招对我很管用。

下面是如何使用 Python3、 sqlite3和杂注语句获得大量表列的方法:

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

来源

因为所有的答案都使用 COUNT(),所以您也可以使用 MAX()来获取特定表中的列数,如下所示

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

一个 href = “ https://dev.mysql.com/doc/mysql-infoschema-excerpt/5.5/en/column-table.html”rel = “ nofollow noReferrer”> The INFORMATION_SCHEMA COLUMNS Table

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

它正在工作(mysql) :

SELECT TABLE_NAME , count(COLUMN_NAME)
FROM information_schema.columns
GROUP BY TABLE_NAME
    SELECT table_name, COUNT(*) AS column_count
FROM information_schema.columns
WHERE table_schema = 'your_schema_name'
GROUP BY table_name

获取架构中所有表及其各自的列计数的列表。 您可能需要在 where 子句中添加 table _ catalog = ‘ your _ database _ name’条件。