0

Teradata の dbc.Columns テーブルからすべてのデータベース名と列名を自動的に選択し、特定の値のセットを検索するクエリを作成することはできますか?

値のセット:

WHERE abc in (1,2,3)

dbc.columns の選択:

SELECT DatabaseName, TableName FROM dbc.COLUMNS
WHERE ColumnName LIKE '%abc%'

これを組み合わせて、ColumnName が特定の値のサブセットを持つ DatabaseName と TableName の組み合わせのみを返すクエリを作成するにはどうすればよいですか?

アップデート:

このクエリは、すべてのデータベースと列の組み合わせを検索します。

SELECT TRIM(BOTH FROM a.DatabaseName) || '.' || TRIM( BOTH FROM a.TableName)
FROM dbc.COLUMNS AS a
WHERE ColumnName LIKE '%abc%'

いくつかの変数または sthg を定義することは可能ですか。そうしないと?

4

1 に答える 1

1

次のような動的 SQL ステートメントを記述する必要があります。

SELECT 
   'SELECT ''' || DatabaseName || '.' || TableName || '.' || ColumnName || ''''
   ' WHERE EXISTS (SELECT * FROM ' || DatabaseName || '.' || TableName ||
   ' WHERE ' || ColumnName || ' IN (1,2,3));' 
FROM dbc.ColumnsVX
WHERE ColumnName LIKE '%abc%';

結果のクエリを実行すると、テーブルごとに 0 行または 1 行を含む 1 つの結果セットが返されます。

単一の結果セットを取得するには、dbc.columnsVX の結果にカーソルを置いて (INSERT INTO temptable を追加して) ストアド プロシージャを記述し、各行に IMMEDIATE を実行する必要があります。最後に、temptable の行を返します。

あなたが経験豊富な SQL プログラマでない限り、DBA は SP を作成する権利をあなたに与えません。

しかし、なぜこの種の情報が実際に必要なのでしょうか? 干し草の山から針を探していますか?

于 2013-08-05T10:32:13.607 に答える