テーブルのデータと混同しないように、データベースをクエリして列名を取得する必要があります。私は名前のテーブルがある場合たとえば、EVENT_LOG
含まれているeventID
、eventType
、eventDesc
、とeventTime
、私は、クエリと何もないから、これらのフィールド名を取得したいと思います。
私はこれを行う方法を見つけました:
しかし、私は知る必要があります:これは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'
USER_TAB_COLUMNS
してみてくださいall_tab_columns
。結果について100%確信するために、あなたはスペシフィなオーナーである可能性があります。
あなたはこれを行うことができます:
describe EVENT_LOG
または
desc EVENT_LOG
注:テーブル名がわかっていて、特にOracleの場合のみ適用されます。
SQLiteの場合、次のようなものを使用できると思います。
PRAGMA table_info(table-name);
sqlite.orgからの説明:
このプラグマは、名前付きテーブルの列ごとに1行を返します。結果セットの列には、列名、データ型、列をNULLにできるかどうか、および列のデフォルト値が含まれます。結果セットの「pk」列は、主キーの一部ではない列の場合はゼロであり、主キーの一部である列の主キーの列のインデックスです。
その情報は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)
ALL_TAB_COLUMNS
Oracle データベースリファレンスを介した公式ドキュメント。このビューは、現在のユーザーがアクセスできるテーブル、ビュー、およびクラスターの列について説明します。
select column_name from all_tab_columns where table_name = 'dbo.usertbl';
他の答えは質問に十分に答えますが、私はいくつかの追加情報を共有すると思いました。その他は、テーブル情報を取得するために「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';
たいした問題ではないでしょうが、私は以前に書きました、そしてそれは合うようです。
Incorrect Syntax near '|'
エラーが発生します
select column_name,* from information_schema.columns
where table_name = 'YourTableName'
order by ordinal_position
これも私たちがそれを使うことができる方法の一つです
select * from product where 1 != 1
SELECT COLUMN_NAME 'all_columns'
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='user';
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は '|'を必要とするため、これは入力を動的に渡すのにも最適です。複数の入力用ですが、データを分離し、保存/クラス/関数への受け渡しを簡単にする方法でもあります。
送信時にセキュリティのためにダミーデータも投入してみて、エラーを受信したときに返されたものと比較してください。
答えはここにあります: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;
Teradataの列名へのアクセスを探すこの質問に出くわしたので、SQLの「フレーバー」の答えを追加します。
SELECT ColumnName
FROM DBC.Columns
WHERE DatabaseName='DBASE_NAME'
AND TableName='TABLE_NAME';
情報はDBC dbaseに保存されます。
データ型の取得はもう少し複雑です: teradataシステムテーブルを使用して列の型を取得します
SELECT COLUMN_NAME
FROM YourDatabase.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'YourTableName'