Как я могу получить имена столбцов из таблицы в Oracle? - PullRequest
168 голосов
/ 17 января 2009

Мне нужно запросить базу данных, чтобы получить имена столбцов , чтобы не путать их с данными в таблице. Например, если у меня есть таблица с именем EVENT_LOG, которая содержит eventID, eventType, eventDesc и eventTime, то я бы хотел получить эти имена полей из запроса и ничего больше.

Я нашел, как это сделать в:

Но мне нужно знать: как это можно сделать в Oracle ?

Ответы [ 25 ]

2 голосов
/ 25 февраля 2014

Даже это тоже один из способов, которым мы можем его использовать

select * from product where 1 != 1
2 голосов
/ 27 мая 2014
SELECT COLUMN_NAME 'all_columns' 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME='user';
2 голосов
/ 16 апреля 2013

Для SQL Server:

SELECT [name] AS [Column Name]
FROM syscolumns
WHERE id = object_id('TABLE_NAME')
2 голосов
/ 07 февраля 2013

для Oracle

SELECT column_name FROM user_tab_cols WHERE table_name=UPPER('tableName');
1 голос
/ 19 января 2013

Вы также можете попробовать это, но это может быть больше информации, чем вам нужно:

sp_columns TABLE_NAME
1 голос
/ 06 сентября 2017

В Oracle есть два представления, которые описывают столбцы:

  • DBA_TAB_COLUMNS описывает столбцы всех таблиц, представлений и кластеры в базе данных.

  • USER_TAB_COLUMNS описывает столбцы таблиц, представлений и
    кластеры, принадлежащие текущему пользователю. Это представление не отображает
    ВЛАДЕЛЕЦ столбец.

1 голос
/ 21 сентября 2014

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 требует '|' для нескольких входов, но это также способ хранить данные отдельно и их легко хранить / передавать в классы / функции.

Попробуйте также добавить фиктивные данные для обеспечения безопасности при их отправке и сравнить, что было возвращено при получении каких-либо ошибок.

0 голосов
/ 25 октября 2013
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 голосов
/ 14 декабря 2014
SELECT COLUMN_NAME 
FROM YourDatabase.INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'YourTableName'
0 голосов
/ 17 октября 2014

вы можете выполнить этот запрос

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...