Знайдіть кількість стовпців у таблиці


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
Привіт я не можу під стендом, тут інформація може ви дати мені запит ще раз .. таблиця ім'я = Post стовпці = PostingID, PostingDate, Body
praveenjayapal

2
Якщо я не плутаюся, ви шукаєте, скільки стовпців стоїть у таблиці. Якщо ви виконаєте наступний запит, він повернеться 3 (припускаючи, що єдиними стовпцями є PostingId, PostingDate та Body) ВИБІРТЕ КУЛЬТУРУ (*) ІНФОРМАЦІЯ_SCHEMA.COLUMNS WHERE table_name = 'post'
Натан Кооп

10
Я думаю, що вам потрібно замінити "table_schema" вище на "TABLE_CATALOG" на змінну 'database_name'
Harvey Darvey

У землі MySQL (позначено в питанні) ... MySQL databaseеквівалентний schemaANSI SQL і table_catalogзавждиdef
Стів Бузонас

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
Антоніо Серрано

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

Примітка: ваше_таблицю_мення слід замінити фактичним іменем таблиці


6

Використання JDBC на Java:

    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. Таким чином, ви можете отримати схему, але немає даних, які могли б додати непотрібні накладні витрати.
Каскадер

5

Уже трохи пізно, але будь ласка, візьміть це від мене ...

У редакторі (Новий запит), вибравши об’єкт бази даних, це може бути і таблиця; якщо ми будемо використовувати клавішу швидкого доступу Alt + F1, ми отримаємо всю інформацію про об'єкт, і, думаю, вирішимо і вашу проблему.


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

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таблиці, кажучи, що вона знаходиться в інформаційній схемі. table_catalogіснує в mysql суто з метою сумісності з іншими dbs, це не те саме, що table_schema- дивіться коментарі під цією відповіддю.
Пол Кемпбелл

3

Або скористайтеся стовпцями 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

виберіть COUNT (*) з INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '<YOURTABLENAME>'
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

Знайти кількість стовпців у таблиці можна лише за допомогою 3 простих рядків коду PHP.

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

$numcolumnsв цьому випадку повертає число на даній таблиці.

Сподіваємось, це допоможе іншим.


1

Запит для підрахунку кількості стовпців у таблиці:

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

Замініть ім'я таблиці на ім’я таблиці, загальна кількість стовпців якої ви хочете повернути.


це також застосовується для MYSQL, тому що я не можу його виконати
Хуссейн Ахтар Вахід 'Гурі'

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
Будь ласка, не публікуйте лише код як відповідь, але також додайте пояснення того, що робить ваш код і як він вирішує проблему. Відповіді з поясненням, як правило, вищої якості і, швидше за все, залучають відгуки.
Сурай Кумар

0

Наступний запит визначає, як стовпці в таблиці: -

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

0

Відповідь 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дозволить отримати кількість стовпців у рядку, на який ви запитували.


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

Джерело

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.