Jak uzyskać nazwy kolumn z tabeli w Oracle?

Muszę odpytywać bazę danych, aby uzyskać nazwy kolumn, nie mylić z danymi w tabeli. Na przykład, jeśli mam tabelę o nazwie EVENT_LOG, która zawiera eventID, eventType, eventDesc, i eventTime, wtedy chciałbym odzyskać te nazwy pól z zapytania i nic więcej.

Znalazłem jak to zrobić w:

Ale muszę wiedzieć: Jak można to zrobić w wyroczni ?

Author: Community, 2009-01-16

25 answers

Możesz zapytać tabelę USER_TAB_COLUMNS o metadane kolumn tabeli.

SELECT table_name, column_name, data_type, data_length
FROM USER_TAB_COLUMNS
WHERE table_name = 'MYTABLE'
 199
Author: baretta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-16 23:57:18

W 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 " dla widoków Type = " U " dla tabel

 67
Author: Eppz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-17 02:25:40

Możesz to zrobić:

describe EVENT_LOG

Lub

desc EVENT_LOG

Uwaga: dotyczy tylko wtedy, gdy znasz nazwę tabeli, a konkretnie Oracle.

 39
Author: Sergey Golovchenko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-29 14:19:05

Dla SQL Server 2008 możemy użyć information_schema.kolumny do pobierania informacji o kolumnach

SELECT *
FROM   information_schema.columns
WHERE  table_name = 'Table_Name'
ORDER  BY ordinal_position  
 26
Author: Jom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-23 15:16:48

Dla SQLite wierzę, że można użyć czegoś takiego jak:

PRAGMA table_info(table-name);

Wyjaśnienie z sqlite.org:

Ta pragma zwraca jeden wiersz dla każdej kolumny w nazwanej tabeli. Kolumny w zestawie wynikowym zawierają nazwę kolumny, typ danych, czy kolumna może mieć wartość NULL oraz domyślną wartość dla kolumny. Kolumna " pk " w zestawie wynikowym ma wartość zero dla kolumn, które nie są częścią klucza podstawowego i jest indeksem kolumny w kluczu głównym dla kolumn, które są część klucza głównego.

Zobacz też: Sqlite.org Pragma Table Info

 19
Author: shieldstroy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-09 05:13:01

Informacja ta jest przechowywana w ALL_TAB_COLUMNS tabeli systemowej:

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

DUMMY

Lub możesz DESCRIBE tabelę, jeśli używasz SQL * PLUS:

SQL> desc dual
Name                               Null?    Type
----------------------------------------------------- -------- ---------------------- -------------
DUMMY                               VARCHAR2(1)
 16
Author: Jon Ericson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-16 23:56:36

Inne odpowiedzi wystarczająco odpowiadają na pytanie, ale pomyślałem, że podzielę się dodatkowymi informacjami. Inne opisują składnię "opisz tabelę" w celu uzyskania informacji o tabeli. Jeśli chcesz uzyskać informacje w tym samym formacie, ale bez użycia opisz, możesz to zrobić:

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';

Prawdopodobnie nie ma większego znaczenia, ale napisałem to wcześniej i wydaje się pasować.

 9
Author: Sasha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-17 02:10:17

Dla Oracle

SELECT column_name FROM user_tab_cols WHERE table_name=UPPER('tableName');
 4
Author: jampez77,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-07 10:19:48
describe YOUR_TABLE;

W Twoim przypadku:

describe EVENT_LOG;
 4
Author: Rohit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-01 06:24:14
select column_name,* from information_schema.columns
 where table_name = 'YourTableName'
order by ordinal_position
 3
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-06 08:38:40

Dla MySQL użyj

SELECT column_name 
FROM information_schema.columns 
WHERE 
table_schema = 'Schema' AND table_name = 'Table_Name'
 3
Author: ssamuel68,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-20 06:30:56

Nawet to jest również jeden ze sposobów, w jaki możemy go użyć

select * from product where 1 != 1
 3
Author: JaiSankarN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-25 16:18:15

Dla SQL Server:

SELECT [name] AS [Column Name]
FROM syscolumns
WHERE id = object_id('TABLE_NAME')
 2
Author: bstricks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-21 11:41:12
SELECT COLUMN_NAME 'all_columns' 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME='user';
 2
Author: expert one,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-27 11:53:22

Możesz również spróbować tego, ale może to być więcej informacji, niż potrzebujesz:

sp_columns TABLE_NAME
 1
Author: WEFX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-18 23:16:45

Mysql

SHOW COLUMNS FROM a_table_named_users WHERE Field REGEXP 'user_id|user_name|user_pass'

To zwróci wynik podobny do tego:

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

Następnie, aby wyciągnąć wartości, możesz po prostu

fetch row[0]

Jest to również Świetne do dynamicznego przekazywania danych wejściowych, ponieważ wyrażenie regularne wymaga " / " DLA WIELU WEJŚĆ, ale jest również sposobem na oddzielenie danych i łatwe do przechowywania/przekazywania do klas/funkcji.

Spróbuj wrzucić fałszywe dane, jak również dla bezpieczeństwa podczas wysyłania i porównać to, co zostało zwrócone po otrzymaniu jakichkolwiek błędów.

 1
Author: Dbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-21 19:23:27

W Oracle istnieją dwa widoki opisujące Kolumny:

  • DBA_TAB_COLUMNS opisuje kolumny wszystkich tabel, widoków i klastry w bazie danych.

  • USER_TAB_COLUMNS opisuje kolumny tabel, widoków i
    klastry należące do bieżącego użytkownika. Ten widok nie wyświetla
    Kolumna właściciela.

 1
Author: Renaud Kern,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-06 09:03:17

Odpowiedź jest tutaj: http://php.net/manual/en/function.mysql-list-fields.php W Twoim przypadku użyłbym następującego kodu:

$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
Author: user2558588,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-09 15:39:45
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
Author: Henry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-25 19:47:37

Możesz uruchomić to zapytanie

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
Author: Etibar - a tea bar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-17 07:24:31

Po prostu wybierz pierwszy wiersz z tabeli, dla oracle: select * from <table name> where rownum = 1;

 -1
Author: blue-sky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-24 13:09:30

Natknąłem się na to pytanie szukając dostępu do nazw kolumn na Teradata, więc dodam odpowiedź dla ich "smaku" SQL:

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

Informacja jest przechowywana w bazie dbase DBC.

Pobieranie typów danych jest trochę bardziej zaangażowane: Get column type using Teradata system tables

 -1
Author: carnust,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:33:24

Spróbuj tego

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%'
 -1
Author: pals17,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-09 11:02:00

I did it like this

SELECT 
    TOP 0
    *
FROM
    Posts

Działa nawet w http://data.stackexchange.com czyje stoły służbowe nie znam!

 -3
Author: Val,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-22 11:51:47
SELECT COLUMN_NAME 
FROM YourDatabase.INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'YourTableName'
 -4
Author: user3655399,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-14 02:11:48