web-dev-qa-db-ja.com

Oracleのテーブルから列名を取得する方法を教えてください。

テーブル内のデータと混同しないように、列名を取得するためにデータベースにクエリする必要があります。たとえば、eventIDeventTypeeventDesc、およびeventTimeを含む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

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からの説明:

このプラグマは、指定されたテーブルの各列に対して1行を返します。結果セットの列には、列名、データ型、列をNULLにできるかどうか、および列のデフォルト値が含まれます。結果セット内の "pk"列は、主キーの一部ではない列の場合はゼロで、主キーの一部である列の場合は主キー内の列のインデックスです。

Sqlite.orgプラグマテーブル情報 もご覧ください。

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

Oracleの場合

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には、列を説明する2つのビューがあります。

  • DBA_TAB_COLUMNSは、データベース内のすべての表、ビューおよびクラスタの列を示します。

  • USER_TAB_COLUMNSは、表、ビューの列を表します。
    現在のユーザーが所有するクラスタこのビューには表示されません
    所有者の列。

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