답변:
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_catalog = 'database_name' -- the database
AND table_name = 'table_name'
database
A와 동등 schema
ANSI SQL에서 그리고는 table_catalog
항상def
SELECT COUNT(COLUMN_NAME)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_CATALOG = 'Database name'
AND TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'table name'
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);
SELECT * FROM sample2 WHERE 1=2
. 이렇게하면 스키마를 가져올 수 있지만 데이터는 없어 불필요한 오버 헤드가 추가 될 수 있습니다.
글쎄 나는 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'
. 나는 실제로 그 이유를 알게되어 기쁠 것이다.
database_name
는 기본 데이터베이스를 설정하므로 발행하는 명령문에서 테이블 이름을 한정 할 필요가 없습니다. 여기 columns
에서 information_schema 내에 있다고 말 하여 테이블 이름을 한정합니다 . table_catalog
순전히 다른 db와의 호환성을 위해 mysql에 존재하며 동일하지 않습니다 table_schema
-해당 답변 아래의 주석을 참조하십시오.
또는 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
테이블의 열 수를 계산하는 쿼리 :
select count(*) from user_tab_columns where table_name = 'tablename';
tablename을 반환하려는 총 열 수가있는 테이블의 이름으로 바꿉니다.
SELECT COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'table_name';
db2 'describe table "SCHEMA_NAME"."TBL_NAME"'
다음 쿼리는 테이블의 열을 찾습니다.
SELECT COUNT(COLUMN_NAME) FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = 'TableName';
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
하면 쿼리 한 행의 열 수를 검색 할 수 있습니다.
모든 답변이를 사용 하고 있으므로 특정 테이블의 열 수를 다음과 같이 가져 오는 데 COUNT()
사용할 수도 있습니다.MAX()
SELECT MAX(ORDINAL_POSITION) NumberOfColumnsInTable
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG = 'YourDatabaseNameHere'
AND
TABLE_SCHEMA = 'YourSchemaNameHere'
AND
TABLE_NAME = 'YourTableNameHere';