Найдите количество столбцов в таблице

122

Можно узнать количество строк в таблице:

select count(*) from tablename

Можно ли узнать количество столбцов в таблице?

praveenjayapal
источник

Ответы:

204
SELECT COUNT(*)
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE table_catalog = 'database_name' -- the database
   AND table_name = 'table_name'
Натан Куп
источник
1
Привет, я не могу понять, здесь информация, пожалуйста, дайте мне запрос еще раз .. table name = post columns = PostingID, PostingDate, Body
praveenjayapal
2
Если я не запутался, вы ищете, сколько столбцов в таблице. Если вы выполните следующий запрос, он вернет 3 (при условии, что единственными столбцами являются PostingId, PostingDate и Body) SELECT COUNT (*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'post'
Натан Куп
10
Я думаю, вам нужно заменить «table_schema» выше на «TABLE_CATALOG» для переменной «database_name»
Харви Дарви
В мире MySQL (отмечен в вопросе) ... MySQL databaseэквивалентен a schemaв ANSI SQL, и table_catalogвсегдаdef
Стив Бузонас
1
"table_catalog" необходимо изменить на "TABLE_SCHEMA"
Чамара Мадуранга
39
SELECT COUNT(COLUMN_NAME) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE 
    TABLE_CATALOG = 'Database name' 
    AND TABLE_SCHEMA = 'dbo' 
    AND TABLE_NAME = 'table name'
Kavitha
источник
1
Этот ответ отлично работает, по крайней мере, с Microsoft SQL Server
Антонио Серрано
8
SELECT count(*)
FROM information_schema.columns
WHERE table_name = 'Your_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);
Himanshu
источник
2
Это хороший общий подход (независимый от РСУБД). Предлагаю только изменить запрос на SELECT * FROM sample2 WHERE 1=2. Таким образом, вы можете получить схему, но не данные, которые могут добавить ненужные накладные расходы.
Cascader
5

Было немного поздно, но, пожалуйста, поверьте мне ...

В редакторе (Новый запрос), выбрав объект базы данных, это также может быть таблица, если мы воспользуемся сочетанием клавиш Alt + F1, мы получим всю информацию об объекте, и я думаю, что это также решит вашу проблему.

itb564
источник
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'. Я действительно буду счастлив узнать почему.

ambodi
источник
USE database_nameустанавливает базу данных по умолчанию, поэтому вам не нужно уточнять имена таблиц в каких-либо выдаваемых вами операторах. Здесь вы уточняете columnsимя таблицы, говоря, что оно находится в information_schema. table_catalogсуществует в mysql исключительно в целях совместимости с другими базами данных, это не то же самое, что и table_schema- см. комментарии под этим ответом.
Пол Кэмпбелл
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
jerryhung
источник
выберите COUNT (*) из INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '<YOURTABLENAME>'
Руди Инохоса,
2
SELECT COUNT(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS WHERE 
TABLE_CATALOG = 'database_name' AND TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'table_name'
abhid89
источник
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';

Замените tablename на имя таблицы, общее количество столбцов которой вы хотите вернуть.

Дипак
источник
применимо ли это также для MYSQL, потому что я не могу его выполнить
Хуссейн Ахтар Вахид 'Ghouri'
1

Можно использовать следующий оператор sql:

select count(*) Noofcolumns from SYSCOLUMNS where id=(select id from SYSOBJECTS where name='table_name')
Пранав Шах
источник
1
SELECT COUNT(*) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE 
   TABLE_NAME = 'table_name';
Анель Гоплани
источник
Вышеупомянутое должно работать, чтобы получить количество столбцов в указанной таблице в базе данных SQL Server.
Aneel Goplani
1

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

anask
источник
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позволит вам получить количество столбцов в запрашиваемой вами строке.

delliottg
источник
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

Ilyes
источник
-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()))

Источник

Кирилл
источник