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
아니면 할 수 있어DESCRIBE
SQL*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
'programing' 카테고리의 다른 글
react-router의 URL에서 해시를 제거하는 방법 (0) | 2023.03.27 |
---|---|
Spring Boot에서 서블릿필터를 등록하지 않도록 합니다. (0) | 2023.03.27 |
JQ json 값에서 줄바꿈 문자가 아닌 줄바꿈 문자를 인쇄하는 방법 (0) | 2023.03.27 |
왜 JSX 소품은 화살표 기능이나 바인드를 사용하면 안 되는가? (0) | 2023.03.27 |
javascript에서 가져오기 응답이 json 객체인지 확인하는 방법 (0) | 2023.03.27 |