it-swarm-ko.tech

Oracle의 테이블에서 열 이름을 얻으려면 어떻게합니까?

데이터베이스를 쿼리하여 테이블의 데이터와 혼동하지 않도록 열 이름 을 가져와야합니다. 예를 들어, eventID, eventType, eventDesceventTime을 포함하는 EVENT_LOG라는 테이블이있는 경우 쿼리에서 해당 필드 이름을 검색하고 싶지 않습니다.

이 작업을 수행하는 방법을 찾았습니다.

하지만 알아야 할 것은 : 어떻게 이것을 Oracle 에서 할 수 있습니까?

168
Paxenos

USER_TAB_COLUMNS 테이블에서 테이블 열 메타 데이터를 쿼리 할 수 ​​있습니다.

SELECT table_name, column_name, data_type, data_length
FROM USER_TAB_COLUMNS
WHERE table_name = 'MYTABLE'
169
baretta

SQL Server에서 ...

SELECT [name] AS [Column Name]
FROM syscolumns
WHERE id = (SELECT id FROM sysobjects WHERE type = 'V' AND [Name] = 'Your table name')

보기에 대해 Type = 'V'테이블에 대해 Type = 'U'

67
Eppz

당신은 이것을 할 수 있습니다 :

describe EVENT_LOG

또는

desc EVENT_LOG

참고 : 테이블 이름을 알고 있고 특히 Oracle을 알고있는 경우에만 적용됩니다.

38
Sergey Golovchenko

SQL Server 2008의 경우 열 정보를 얻기 위해 information_schema.columns를 사용할 수 있습니다

SELECT *
FROM   information_schema.columns
WHERE  table_name = 'Table_Name'
ORDER  BY ordinal_position  
25
Jom

SQLite의 경우 다음과 같은 것을 사용할 수 있다고 생각합니다.

PRAGMA table_info(table-name);

Sqlite.org의 설명 :

이 pragma는 명명 된 테이블의 각 열에 대해 하나의 행을 반환합니다. 결과 집합의 열은 열 이름, 데이터 형식, 열이 NULL이 될 수 있는지 여부 및 열의 기본값을 포함합니다. 결과 집합의 "pk"열은 기본 키의 일부가 아닌 열에 대해서는 0이며 기본 키의 일부인 열의 기본 키 열의 인덱스입니다.

참고 사항 : Sqlite.org Pragma Table Info

18
shieldstroy

이 정보는 ALL_TAB_COLUMNS 시스템 테이블에 저장됩니다.

SQL> select column_name from all_tab_columns where table_name = 'DUAL';

DUMMY

또는 SQL * PLUS를 사용하는 경우 테이블을 DESCRIBE 할 수 있습니다.

SQL> desc dual
Name                               Null?    Type
----------------------------------------------------- -------- ---------------------- -------------
DUMMY                               VARCHAR2(1)
12
Jon Ericson

다른 답변은이 질문에 대한 답을 충분하게했지만 몇 가지 추가 정보를 공유 할 것이라고 생각했습니다. 다른 것은 테이블 정보를 얻기 위해 "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';

아마도별로 중요하지 않지만, 일찍 쓴 것이 맞을 것 같습니다.

8
Sasha

MySQL의 경우, 다음을 사용하십시오.

SELECT column_name 
FROM information_schema.columns 
WHERE 
table_schema = 'Schema' AND table_name = 'Table_Name'
3
ssamuel68
select column_name,* from information_schema.columns
 where table_name = 'YourTableName'
order by ordinal_position
3
user1464296
describe YOUR_TABLE;

귀하의 경우 :

describe EVENT_LOG;
3
Rohit

SQL Server의 경우 :

SELECT [name] AS [Column Name]
FROM syscolumns
WHERE id = object_id('TABLE_NAME')
2
bstricks

심지어 이것도 우리가 사용할 수있는 방법 중 하나입니다.

select * from product where 1 != 1
2
JaiSankarN
SELECT COLUMN_NAME 'all_columns' 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME='user';
2
expert one

오라클의 경우

SELECT column_name FROM user_tab_cols WHERE table_name=UPPER('tableName');
2
jampez77

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에 '|'가 필요하기 때문에 입력을 동적으로 전달할 때도 좋습니다. 여러 입력에 대해서만 데이터를 분리하고 클래스/함수에 저장/전달하기 쉬운 방법이기도합니다.

그것을 보낼 때 보안을 위해 더미 데이터를 던져보고 오류를 받았을 때 반환 된 것을 비교하십시오.

1
Dbo

Oracle에서 열을 설명하는 두 가지보기가 있습니다.

  • DBA_TAB_COLUMNS는 데이터베이스의 모든 테이블, 뷰 및 클러스터의 열을 설명합니다.

  • USER_TAB_COLUMNS는 테이블, 뷰 및 뷰의 열을 설명합니다.
    현재 사용자가 소유 한 클러스터 이보기에는
    OWNER 열.

1
Renaud Kern

이 방법을 시도해 볼 수도 있지만 필요한 것보다 많은 정보 일 수 있습니다.

sp_columns TABLE_NAME
1
WEFX

대답은 여기에 있습니다 : 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'];
    }
}
0
user2558588
SELECT A.COLUMN_NAME, A.* FROM all_tab_columns a 
WHERE table_name = 'Your Table Name'
AND A.COLUMN_NAME = 'COLUMN NAME' AND a.owner = 'Schema'
0
Henry

이 쿼리를 실행할 수 있음

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;
0
Etibar Hasanov