[pgsql-jp: 29255] Re: SQL文のSELECTについて

羽生 章洋 habu @ air-beat.com
2003年 3月 1日 (土) 21:46:50 JST


"Nakamura Kazusi" <kazzz4 @ hotmail.com>さん:

羽生と申します。

基本的には、既にかさはらさんや近藤さんがレスされている
とおりですし、直接そういうのを実行できる方法は用意されていませんが、
SQLで遊んでみる、という意味で、こういうのもアイディアのひとつですよ
ということで、指定した列を除いたSELECT文を生成する簡単なサンプルを
書いておきます。

select 'SELECT'
  union all
select '  '||a.attname||','  from pg_attribute as a
 where a.attrelid in
       (select oid
        from pg_class
        where lower(relname) = lower('表名')
       )
 and   lower(a.attname) not in
       (lower('除外する列名1'),lower('除外する列名2')・・・)
  union all
select 'FROM '||'表名'
;

もし汎用的にしたい場合は、create functionでもしてみてください。
列名のnot inのところがこのままだと駄目だと思いますけど。
PL/pgSQLにしておけば、execute使って実行まで行えますし。

私はこういうのは、SQL使いならパっと浮かんでさっさと手書きするのが
カッコいい気がするので(バカ^^;)、いつもその場その場でアドホック
に作ってます。

生産性云々はさておいて、もしSQLを使いこなしたいと思うのであれば
こういうトライを年がら年中やってると、SQLだけでかなりのことが
簡単に出来るようになります。

# やり過ぎて、パフォーマンスの悪いSQLになっても、今度はそれを
    速くするということにトライする中で、チューニングのスキルも
    ついちゃいますしね。

直接の参考にはならないので恐縮ですが、発想のヒントになれば幸いです。


★☆★☆★☆★ ↓↓↓知人の頑張りを応援中↓↓↓ ★☆★☆★☆★
アトピーでお悩みの方のお役に立てるかも:http://www.shittori.com/
----------------------------------------------------------------
最近、元気のない方のお役に立てるかも: http://www.genkiari.com/
★☆★☆★☆★ ↑↑↑知人の頑張りを応援中↑↑↑ ★☆★☆★☆★

================================================================
有限会社エア・ビート (http://www.air-beat.com/)
有限会社エア・ロジック(http://www.air-logic.co.jp/)
羽生 章洋            (mailto:habu @ air-beat.com)
================================================================



pgsql-jp メーリングリストの案内