テーブルの行数を見つけることは可能です:
select count(*) from tablename
テーブルの列数を見つけることは可能ですか?
テーブルの行数を見つけることは可能です:
select count(*) from tablename
テーブルの列数を見つけることは可能ですか?
回答:
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_catalog = 'database_name' -- the database
AND table_name = 'table_name'
databaseはschemaANSI SQLのaと同等であり、table_catalog常にdef
SELECT COUNT(COLUMN_NAME)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_CATALOG = 'Database name'
AND TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = '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
WHERE table_name = 'table_name'
USE 'database_name'またはを入れても機能しませんでしたWHERE table_catalog = 'database_name' AND table_name' = 'table_name'。私は実際にその理由を知りたいと思っています。
database_nameはデフォルトのデータベースを設定するため、発行するステートメントでテーブル名を修飾する必要はありません。ここでは、columnsテーブル名をinformation_schema内にあると言って修飾します。table_catalogmysqlには純粋に他のdbとの互換性のために存在しますが、これは同じではありません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
テーブルの列数をカウントするクエリ:
select count(*) from user_tab_columns where table_name = 'tablename';
tablenameを、列の総数を返すテーブルの名前に置き換えます。
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';
MySqlDataReader.GetValuesのMSDNの例から少し変更されたMySQLの回答:
//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';