programing

Oracle 테이블에서 열 이름을 가져오려면 어떻게 해야 합니까?

goodsources 2023. 3. 27. 21:12
반응형

Oracle 테이블에서 열 이름을 가져오려면 어떻게 해야 합니까?

테이블의 데이터와 혼동하지 말고 컬럼 이름을 얻기 위해 데이터베이스를 조회해야 합니다.예를 들어 다음과 같은 이름의 테이블이 있는 경우EVENT_LOG그 안에eventID,eventType,eventDesc,그리고.eventTime그 후 쿼리에서 필드명을 취득하고 싶습니다.

이 작업을 수행하는 방법은 다음과 같습니다.

하지만 Oracle에서 작업을 수행할 수 있는 방법이 무엇인지 알아야 합니다.

USER_에 문의할 수 있습니다.테이블 열 메타데이터의 TAB_COLUMNS 테이블.

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

SQL Server에서...

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

뷰의 경우 = 'V'를 입력하고 테이블의 경우 'U'를 입력합니다.

다음과 같이 할 수 있습니다.

describe EVENT_LOG

또는

desc EVENT_LOG

참고: 테이블 이름, 특히 Oracle에 대해 알고 있는 경우에만 해당됩니다.

SQL Server 2008의 경우 information_schema.columns를 사용하여 열 정보를 가져올 수 있습니다.

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

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

PRAGMA table_info(table-name);

sqlite.org에서 설명:

이 플러그마는 이름 있는 테이블의 각 열에 대해 1개의 행을 반환합니다.결과 집합의 열에는 열 이름, 데이터 유형, 열이 NULL일 수 있는지 여부 및 열의 기본값이 포함됩니다.결과 세트의 "pk" 열은 기본 키의 일부가 아닌 열의 경우 0이고 기본 키의 일부인 열의 색인입니다.

참고 항목: Sqlite.org Pragma Table Info

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

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

DUMMY

아니면 할 수 있어DESCRIBESQL*PLUS를 사용하는 경우 테이블:

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

다른 답변은 충분히 답변이 되었지만, 저는 몇 가지 추가 정보를 공유하려고 생각했습니다.또, 테이블 정보를 취득하기 위해서 「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';

별로 중요하지 않겠지만, 아까 썼는데 맞는 것 같아요.

Oracle의 경우

SELECT column_name FROM user_tab_cols WHERE table_name=UPPER('tableName');
describe YOUR_TABLE;

고객님의 경우:

describe EVENT_LOG;

이것 또한 우리가 사용할 수 있는 방법 중 하나이다.

select * from product where 1 != 1
select column_name,* from information_schema.columns
 where table_name = 'YourTableName'
order by ordinal_position

MySQL의 경우,

SELECT column_name 
FROM information_schema.columns 
WHERE 
table_schema = 'Schema' AND table_name = 'Table_Name'

SQL Server의 경우:

SELECT [name] AS [Column Name]
FROM syscolumns
WHERE id = object_id('TABLE_NAME')
SELECT COLUMN_NAME 'all_columns' 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME='user';

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

sp_columns TABLE_NAME
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'

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가 여러 입력에 대해 '|'를 필요로 하기 때문에 동적으로 입력을 전달하는데 매우 효과적이지만 데이터를 분리하여 저장/수납하기 쉬운 방법입니다.

송신 시 보안을 위해 더미 데이터도 입력해 보고, 에러가 발생했을 때 반환된 데이터를 비교합니다.

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

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

  • USER_TAB_COLUMNS는 및 USER_의 합니다.TAB_COLUMNS: 열, 열, 열, 열, 열.
    이치노에는 「이러다」는 되지 않습니다.
    ] [OWNER »

정답은 다음과 같습니다.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;

이거 드셔보세요

select * from sys.all_columns c join sys.objects o on c.object_id=o.object_id where o.name = 'TABLENAME' and c.name like '%COLUMN NAME%'

Teradata의 열 이름에 대한 액세스 권한을 찾으려다 이 질문을 받았습니다. SQL의 'flavour'에 대한 답변을 추가하겠습니다.

SELECT ColumnName
FROM DBC.Columns
WHERE DatabaseName='DBASE_NAME'
AND TableName='TABLE_NAME';

이 정보는 DBC 데이터베이스에 저장됩니다.

데이터 타입을 취득하는 것은 조금 더 중요합니다.테라데이터 시스템 테이블을 사용하여 열 유형 가져오기

이렇게 했어요.

SELECT 
    TOP 0
    *
FROM
    Posts

서비스 테이블을 모르는 http://data.stackexchange.com에서도 동작합니다!

SELECT COLUMN_NAME 
FROM YourDatabase.INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'YourTableName'

언급URL : https://stackoverflow.com/questions/452464/how-can-i-get-column-names-from-a-table-in-oracle

반응형