web-dev-qa-db-ja.com

特定の列名を持つデータベース内のすべてのテーブルを検索するクエリを作成する方法

約100のテーブルを持つデータベースがあり、2つのテーブルから特定のデータを取得するために結合クエリを作成する必要があります。どちらかは知っていますが、もう一方は知りません。基本的に私は次のようなものが必要です:

select <tables> from <database> where exists table.column name;

これどうやってするの?

12
Joe Essey

information_schemaの使用

これは、標準に準拠したクロスRDBMSによる方法です。

SELECT table_catalog, table_schema, table_name, column_name
FROM INFORMATION_SCHEMA.columns
WHERE column_name = '<your column name>';

あなたはこれを文書化して見ることができます

21
SqlSandwiches

IBM DB2の場合、以下を使用します。

select tabschema,tabname from syscat.columns where colname = 'COLUMN_NAME'

DB2では、列名は大文字になりますnlessは、二重引用符の中に大文字以外の何かで定義されています。次に、列名のexact大文字と小文字も指定する必要があります。

5
Chris Aldrich

以下のクエリは、あなたが探しているものを与えるはずです:

use YourDatabase;
go

select
    object_schema_name(t.object_id) + '.' + t.name as table_name,
    c.name as column_name
from sys.tables t
inner join sys.columns c
on t.object_id = c.object_id
where c.name like '%ColumnSearchText%';

正確な名前の列を探している場合は、WHERE句を次のように置き換えます。

where c.name = 'ColumnSearchText';
3
Thomas Stringer

Oracle sql/plsql:

select table_name from all_tab_columns where column_name='yourcolumnname';
0
Tim Chaubet

teradata 15の場合:

SELECT DATABASENAME||'.'||TABLENAME AS FULL_TABLENAME,
COUNT(1) AS NUMBER_OF_COLUMNS
FROM DBC.COLUMNSV
WHERE 1 = 1
AND COLUMNNAME LIKE '%<YOUR COLUMNNAME HERE>%'
GROUP BY 1
0
Boris N.
SELECT * FROM _v_sys_columns WHERE COLUMN_NAME='$COLUMN_NAME'

列名をこの変数に渡してください:$COLUMN_NAME

0
Yasim