열 이름 을 얻으려면 데이터베이스를 쿼리해야 하며 테이블의 데이터와 혼동하지 마십시오. 예를 들어, 내가라는 테이블이있는 경우 EVENT_LOG
포함 된 eventID
, eventType
, eventDesc
, 및eventTime
, 나는 쿼리 및 아무것도에서 해당 필드 이름을 검색 할 것입니다.
나는 이것을하는 방법을 발견했다 :
그러나 나는 알아야합니다 : 오라클 에서 어떻게 이것을 할 수 있습니까?
열 이름 을 얻으려면 데이터베이스를 쿼리해야 하며 테이블의 데이터와 혼동하지 마십시오. 예를 들어, 내가라는 테이블이있는 경우 EVENT_LOG
포함 된 eventID
, eventType
, eventDesc
, 및eventTime
, 나는 쿼리 및 아무것도에서 해당 필드 이름을 검색 할 것입니다.
나는 이것을하는 방법을 발견했다 :
그러나 나는 알아야합니다 : 오라클 에서 어떻게 이것을 할 수 있습니까?
답변:
테이블 열 메타 데이터에 대해 USER_TAB_COLUMNS 테이블을 쿼리 할 수 있습니다.
SELECT table_name, column_name, data_type, data_length
FROM USER_TAB_COLUMNS
WHERE table_name = 'MYTABLE'
USER_TAB_COLUMNS
을 시도 할 수 있습니다 all_tab_columns
. 결과에 대해 100 % 확신하려면 매운 소유자가 될 수 있습니다.
당신은 이것을 할 수 있습니다 :
describe EVENT_LOG
또는
desc EVENT_LOG
참고 : 테이블 이름을 알고 특히 Oracle에 대해 알고있는 경우에만 적용 가능합니다.
SQLite의 경우 다음과 같은 것을 사용할 수 있다고 생각합니다.
PRAGMA table_info(table-name);
sqlite.org의 설명 :
이 pragma는 명명 된 테이블의 각 열에 대해 하나의 행을 반환합니다. 결과 집합의 열에는 열 이름, 데이터 형식, 열이 NULL 일 수 있는지 여부 및 열의 기본값이 포함됩니다. 기본 키의 일부가 아닌 열의 경우 결과 집합의 "pk"열이 0이고 기본 키의 일부인 열의 기본 키 열의 인덱스입니다.
해당 정보는 ALL_TAB_COLUMNS
시스템 테이블에 저장됩니다 .
SQL> select column_name from all_tab_columns where table_name = 'DUAL';
DUMMY
또는 DESCRIBE
SQL * PLUS를 사용하는 경우 테이블을 사용할 수 있습니다.
SQL> desc dual
Name Null? Type
----------------------------------------------------- -------- ---------------------- -------------
DUMMY VARCHAR2(1)
ALL_TAB_COLUMNS
Oracle Database Reference 를 통한 공식 문서 . 이보기는 현재 사용자가 액세스 할 수있는 테이블,보기 및 클러스터의 열을 설명합니다.
select column_name from all_tab_columns where table_name = 'dbo.usertbl';
다른 답변은 질문에 충분히 대답하지만 추가 정보를 공유 할 것이라고 생각했습니다. 다른 사람들은 테이블 정보를 얻기 위해 "DESCRIBE 테이블"구문을 설명합니다. DESCRIBE를 사용하지 않고 동일한 형식으로 정보를 얻으려면 다음을 수행하십시오.
SELECT column_name as COLUMN_NAME, nullable || ' ' as BE_NULL,
SUBSTR(data_type || '(' || data_length || ')', 0, 10) as TYPE
FROM all_tab_columns WHERE table_name = 'TABLENAME';
아마 중요하지 않지만, 나는 그것을 일찍 작성했고 그것은 맞는 것 같습니다.
Incorrect Syntax near '|'
오류가 발생합니다.
select column_name,* from information_schema.columns
where table_name = 'YourTableName'
order by ordinal_position
SELECT COLUMN_NAME 'all_columns'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='user';
MySQL
SHOW COLUMNS FROM a_table_named_users WHERE Field REGEXP 'user_id|user_name|user_pass'
이것은 다음과 같은 결과를 반환합니다 :
Field | Type | Null | Key | Default | Extra
user_id int(8) NO PRI NULL auto_increment
user_name varchar(64) NO MUL NULL
user_pass varchar(64) NO NULL
그런 다음 값을 꺼내기 만하면됩니다.
fetch row[0]
REGEXP에는 '|'가 필요하기 때문에 입력을 동적으로 전달하는데도 좋습니다. 여러 입력의 경우에도 데이터를 분리하고 클래스 / 함수에 쉽게 저장 / 전달할 수있는 방법입니다.
송신 할 때 보안을 위해 더미 데이터를 던지고 오류를 수신했을 때 리턴 된 내용을 비교하십시오.
대답은 여기에 있습니다 : http://php.net/manual/en/function.mysql-list-fields.php 귀하의 경우 다음 코드를 사용합니다 :
$result = mysql_query("SHOW COLUMNS FROM sometable");
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
$fields = array();
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$fields[] = $row['Field'];
}
}
이 쿼리를 실행할 수 있습니다
SELECT t.name AS table_name,
SCHEMA_NAME(schema_id) AS schema_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE '%%' --if you want to find specific column write here
ORDER BY schema_name, table_name;
oracle의 경우 테이블에서 첫 번째 행을 선택하십시오. select * from <table name> where rownum = 1;
이 질문을 통해 Teradata의 열 이름에 액세스 할 수 있으므로 SQL의 '맛'에 대한 답변을 추가하겠습니다.
SELECT ColumnName
FROM DBC.Columns
WHERE DatabaseName='DBASE_NAME'
AND TableName='TABLE_NAME';
정보는 DBC dbase에 저장됩니다.
SELECT COLUMN_NAME
FROM YourDatabase.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YourTableName'