0

OracleにテーブルTABLE_Aがあり、Xで始まる複数の列があります。Xxaa、xxyyy、aaxなど。次に、Xで始まるフィールドを選択します。ワイルドカードを使用する方法はありますか?

4

3 に答える 3

3

動的 SQL を使用してクエリを作成し、必要に応じて実行できます。

declare
  SQL_QUERY   varchar2(4000);
begin
  select    'select '
         || LISTAGG(CNAME, ',') within group (order by CNAME)
         || ' from table_a'
    into SQL_QUERY
    from COL
   where TNAME = 'TABLE_A' and CNAME like 'X%';

  dbms_output.PUT_LINE(SQL_QUERY);
end;
于 2012-08-24T11:27:43.570 に答える
1

いいえ、それはできません。各列を「手動で」リストする必要があります。

(ところで:これは非常に奇妙な要件のように聞こえ、設計が不十分であることを示している可能性があります-しかし、これはあなたが提供した情報ではわかりにくいです)。

于 2012-08-24T11:13:31.320 に答える
0

並べ替えですが、メタテーブル (syscolumns のもの) でそれらを使用し、クエリを作成して実行する必要があります。そのような壊れやすいものよりも、より良い設計を行う方が簡単です。

于 2012-08-24T11:19:09.793 に答える