Znajdź liczbę kolumn w tabeli

122

Liczbę wierszy w tabeli można znaleźć:

select count(*) from tablename

Czy można znaleźć liczbę kolumn w tabeli?

praveenjayapal
źródło

Odpowiedzi:

204
SELECT COUNT(*)
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE table_catalog = 'database_name' -- the database
   AND table_name = 'table_name'
Nathan Koop
źródło
1
Cześć, nie mogę zrozumieć, tutaj informacje czy możesz podać mi zapytanie jeszcze raz .. nazwa tabeli = kolumny postów = PostingID, PostingDate, Body
praveenjayapal
2
O ile nie jestem zdezorientowany, szukasz liczby kolumn w tabeli. Jeśli wykonasz następujące zapytanie, zwróci ono 3 (zakładając, że jedyne kolumny to PostingId, PostingDate i Body) SELECT COUNT (*) FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'post'
Nathan Koop
10
Myślę, że musisz zamienić „table_schema” powyżej na „TABLE_CATALOG” dla zmiennej „database_name”
Harvey Darvey,
W krainie MySQL (oznaczono w pytaniu) ... MySQL databasejest odpowiednikiem a schemaw ANSI SQL i table_catalogzawsze jestdef
Steve Buzonas
1
„table_catalog” należy zmienić na „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'
kavitha
źródło
1
Ta odpowiedź działa doskonale, przynajmniej z Microsoft SQL Server
Antonio Serrano
8
SELECT count(*)
FROM information_schema.columns
WHERE table_name = 'Your_table_name';

Uwaga: nazwa Twojej_tabeli powinna zostać zastąpiona rzeczywistą nazwą tabeli

Rahul Yadav
źródło
6

Korzystanie z JDBC w Javie:

    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
źródło
2
To jest dobre podejście ogólne (agnostyk RDBMS). Proponuję tylko zmienić zapytanie na SELECT * FROM sample2 WHERE 1=2. W ten sposób można uzyskać schemat, ale nie można uzyskać żadnych danych, co mogłoby dodać niepotrzebne obciążenie.
Cascader
5

Trochę się spóźniło, ale proszę, zabierz mi to ...

W edytorze (New Query), wybierając obiekt bazy danych , może to być również tabela, jeśli użyjemy klawisza skrótu Alt + F1 , otrzymamy wszystkie informacje o obiekcie i myślę, że rozwiążemy również Twój problem.

itb564
źródło
4
SELECT count(*) FROM information_schema.`COLUMNS` C
WHERE table_name = 'your_table_name'
AND TABLE_SCHEMA = "your_db_name"
Ketul Rathod
źródło
4

Cóż, wypróbowałem odpowiedź Nathana Koopa i nie zadziałała. Zmieniłem to na następujące i zadziałało:

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

To też nie zadziałało, gdybym wstawił USE 'database_name'ani WHERE table_catalog = 'database_name' AND table_name' = 'table_name'. Z przyjemnością dowiem się, dlaczego.

ambodi
źródło
USE database_nameustawia domyślną bazę danych, więc nie musisz kwalifikować nazw tabel w żadnych wydawanych instrukcjach. Tutaj kwalifikujesz columnsnazwę tabeli, mówiąc, że znajduje się ona w schemacie information_schema. table_catalogistnieje w mysql wyłącznie w celu zapewnienia zgodności z innymi bazami danych, to nie to samo co table_schema- zobacz komentarze pod tą odpowiedzią.
Paul Campbell
3

Lub użyj 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
źródło
wybierz COUNT (*) z 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'
abhid89
źródło
2

Liczbę kolumn w tabeli można znaleźć, używając tylko 3 prostych linii kodu PHP.

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

$numzwróci columnsw tym przypadku liczbę w danej tabeli.

Miejmy nadzieję, że pomoże to innym.

Salim Khan
źródło
1

Zapytanie do policzenia liczby kolumn w tabeli:

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

Zastąp nazwę tabeli nazwą tabeli, której łączna liczba kolumn ma zostać zwrócona.

Deepak
źródło
czy ma również zastosowanie do MYSQL, ponieważ nie mogę go wykonać
Hussain Akhtar Wahid 'Ghouri'
1

Można uzyskać za pomocą następującej instrukcji sql:

select count(*) Noofcolumns from SYSCOLUMNS where id=(select id from SYSOBJECTS where name='table_name')
Pranav Shah
źródło
1
SELECT COUNT(*) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE 
   TABLE_NAME = 'table_name';
Aneel Goplani
źródło
Powyższe powinno działać, aby uzyskać liczbę kolumn w określonej tabeli w bazie danych SQL Server.
Aneel Goplani
1

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

anask
źródło
1
Chociaż może to rozwiązać pierwotne pytanie, najlepiej jest dołączyć opis, abyśmy wiedzieli, co się dzieje.
Tedinoz
1
Nie wysyłaj tylko kodu jako odpowiedzi, ale dołącz też wyjaśnienie, co robi Twój kod i jak rozwiązuje problem. Odpowiedzi z wyjaśnieniem są zwykle wyższej jakości i częściej przyciągają głosy za.
Suraj Kumar
0

Następujące zapytanie odnajduje kolumny w tabeli: -

 SELECT COUNT(COLUMN_NAME) FROM USER_TAB_COLUMNS
 WHERE TABLE_NAME = 'TableName';
Naveen kumar. K.
źródło
0

Odpowiedź MySQL nieco zaadaptowana z przykładu MSDN dla 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]);
}

Użycie MySqlDataReader.FieldCountpozwoli ci pobrać liczbę kolumn w zapytanym wierszu.

delliottg
źródło
0
SELECT TABLE_SCHEMA
    , TABLE_NAME
    , number = COUNT(*) 
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY TABLE_SCHEMA, TABLE_NAME;

Ten pracował dla mnie.

Sumesh Es
źródło
0

Ponieważ wszystkie odpowiedzi są używane COUNT(), możesz również użyć, MAX()aby uzyskać liczbę kolumn w określonej tabeli jako

SELECT MAX(ORDINAL_POSITION) NumberOfColumnsInTable
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG = 'YourDatabaseNameHere'
      AND 
      TABLE_SCHEMA = 'YourSchemaNameHere'
      AND
      TABLE_NAME = 'YourTableNameHere';

Widzieć The INFORMATION_SCHEMA COLUMNS Table

Ilyes
źródło
-1

Oto jak można uzyskać liczbę kolumn tabeli za pomocą instrukcji Python 3, sqlite3 i 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()))

Źródło

Kirill
źródło