テーブルの列数を見つける


122

テーブルの行数を見つけることは可能です:

select count(*) from tablename

テーブルの列数を見つけることは可能ですか?

回答:


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

1
こんにちは、私は理解できません。ここで、もう一度クエリを提供してください。表名=投稿列= PostingID、PostingDate、本文
praveenjayapal 2009年

2
私が混乱していない限り、あなたはテーブルにいくつの列があるかを探しています。次のクエリを実行すると、3が返されます(列がPostingId、PostingDateおよびBodyであると想定)SELECT COUNT(*)FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'post'
Nathan Koop

10
変数「database_name」の上記の「table_schema」を「TABLE_CATALOG」に置き換える必要があると思います
Harvey Darvey

MySQLランド(質問にタグが付けられています)... MySQL databaseschemaANSI SQLのaと同等であり、table_catalog常にdef
Steve Buzonas

1
「table_catalog」を「TABLE_SCHEMA」に変更する必要がある
Chamara Maduranga

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

1
この回答は、少なくともMicrosoft SQL Serverで完全に機能します
Antonio Serrano 2017

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

注:Your_table_nameは実際のテーブル名に置き換える必要があります


6

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

2
これは優れた一般的なアプローチです(RDBMSに依存しない)。クエリをに変更することをお勧めしますSELECT * FROM sample2 WHERE 1=2。この方法では、スキーマは取得できますがデータは取得できず、不要なオーバーヘッドが追加される可能性があります。
Cascader 2013

5

少し遅れましたが、私から取ってください...

エディター(新しいクエリ)では、データベースオブジェクトを選択してテーブルにすることもできます。ショートカットキーAlt + F1を使用すると、オブジェクトのすべての情報が取得され、問題も解決されると思います。



4

ええと、ネイサン・コープの答えを試してみましたが、うまくいきませんでした。私はそれを次のように変更し、うまくいきました:

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

USE 'database_name'またはを入れても機能しませんでしたWHERE table_catalog = 'database_name' AND table_name' = 'table_name'。私は実際にその理由を知りたいと思っています。


USE database_nameはデフォルトのデータベースを設定するため、発行するステートメントでテーブル名を修飾する必要はありません。ここでは、columnsテーブル名をinformation_schema内にあると言って修飾します。table_catalogmysqlには純粋に他のdbとの互換性のために存在しますが、これは同じではありませんtable_schema-その回答の下のコメントを参照してください。
Paul Campbell

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

INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '<YOURTABLENAME>'からCOUNT(*)を選択
Rudy Hinojosa

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

2

PHPコードの3つの単純な行を使用するだけで、テーブルの列数を見つけることができます。

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

$num の数を返します columnsこの場合、指定されたテーブルのます。

うまくいけば、それは他の人を助けるでしょう。


1

テーブルの列数をカウントするクエリ:

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

tablenameを、列の総数を返すテーブルの名前に置き換えます。


実行できないため、MYSQLにも適用できますか
Hussain Akhtar Wahid 'Ghouri'

1

次のSQLステートメントを使用して取得できます。

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


1

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


1
これで元の質問は解決するかもしれませんが、何が起こっているのかがわかるように説明を含めるのが最善です。
テディノス

1
回答としてコードだけを投稿するのではなく、コードの機能と質問の問題を解決する方法の説明も含めてください。説明付きの回答は通常、質が高く、賛成票を集める可能性が高くなります。
Suraj Kumar

0

次のクエリは、テーブル内の列をどのように検索しますか。

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

0

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すると、照会した行の列数を取得できます。


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

これは私のために働いた。


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


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

ソース

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.