테이블의 열 수 찾기


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, Body
praveenjayapal

2
내가 헷갈 리지 않는 한, 당신은 테이블에 몇 개의 열이 있는지 찾고 있습니다. 다음 쿼리를 실행하면, INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '포스트'FROM COUNT (*)를 선택합니다 (유일한 열 PostingId, PostingDate 및 바디입니다 가정) 3을 반환합니다
나단 쿠프

10
난 당신이 변수 '데이터베이스 _'에 대한 "TABLE_CATALOG"위에서 "TABLE_SCHEMA"를 대체 할 필요가 있다고 생각
하비 Darvey

(질문에 태그) MySQL의 땅에서 ... MySQL의는 databaseA와 동등 schemaANSI SQL에서 그리고는 table_catalog항상def
스티브 Buzonas

1
"TABLE_SCHEMA"로 변경 "TABLE_CATALOG"필요
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
이 답변은 마이크로 소프트 SQL 서버에 적어도 완벽하게 작동
안토니오 세라노에게

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

조금 늦었지만 제발 가져가주세요 ...

편집기 (New Query) 에서 데이터베이스 개체선택하여 테이블이 될 수도 있습니다. 바로 가기 키 Alt + F1 을 사용하면 개체의 모든 정보를 얻을 수 있으며 문제도 해결 될 것입니다.


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

4

글쎄 나는 Nathan Koop의 대답을 시도했지만 그것은 나를 위해 작동하지 않았습니다. 나는 그것을 다음과 같이 변경했고 작동했습니다.

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_catalog순전히 다른 db와의 호환성을 위해 mysql에 존재하며 동일하지 않습니다 table_schema-해당 답변 아래의 주석을 참조하십시오.
Paul Campbell 19

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에서 COUNT (*)를 선택합니다. 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';

tablename을 반환하려는 총 열 수가있는 테이블의 이름으로 바꿉니다.


내가 그것을 실행할 수 없기 때문에 MYSQL에도 적용 가능합니까?
Hussain Akhtar Wahid 'Ghouri'12

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"'


1
이렇게하면 원래 질문이 해결 될 수 있지만 설명을 포함하여 진행 상황을 파악하는 것이 가장 좋습니다.
Tedinoz

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.