可以找到表中的行数:
select count(*) from tablename
是否可以找到表中的列数?
可以找到表中的行数:
select count(*) from tablename
是否可以找到表中的列数?
Answers:
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_catalog = 'database_name' -- the database
AND table_name = 'table_name'
database
等同schema
于ANSI SQL,并且table_catalog
始终是def
SELECT count(*)
FROM information_schema.columns
WHERE table_name = 'Your_table_name';
注意:Your_table_name应该替换为您的实际表名
在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);
SELECT * FROM sample2 WHERE 1=2
。这样,您可以获得模式但没有数据,这可能会增加不必要的开销。
SELECT count(*) FROM information_schema.`COLUMNS` C
WHERE table_name = 'your_table_name'
AND TABLE_SCHEMA = "your_db_name"
好吧,我尝试了内森·库普(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'
。实际上,我很高兴知道为什么。
database_name
设置默认数据库,因此您在发出的任何语句中都不需要限定表名。在这里,您columns
通过说它在information_schema中来限定表名。table_catalog
存在于mysql中纯粹是为了与其他数据库兼容,这与table_schema
-参见该答案下的注释不一样。
或使用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
可以使用以下sql语句获取:
select count(*) Noofcolumns from SYSCOLUMNS where id=(select id from SYSOBJECTS where name='table_name')
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'table_name';
db2 'describe table "SCHEMA_NAME"."TBL_NAME"'
以下查询查找表中的列:-
SELECT COUNT(COLUMN_NAME) FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = 'TableName';
一个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
将允许您检索查询的行中的列数。
由于所有答案都在使用中COUNT()
,因此您还可以使用MAX()
来获取特定表中的列数,如下所示:
SELECT MAX(ORDINAL_POSITION) NumberOfColumnsInTable
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG = 'YourDatabaseNameHere'
AND
TABLE_SCHEMA = 'YourSchemaNameHere'
AND
TABLE_NAME = 'YourTableNameHere';