iakioの日記 RSSフィード

2008-04-27

ある列以外の全ての列をSELECTする方法(又は複数行をカンマ区切りで連結する方法)

| 15:11 | ある列以外の全ての列をSELECTする方法(又は複数行をカンマ区切りで連結する方法) - iakioの日記 を含むブックマーク はてなブックマーク - ある列以外の全ての列をSELECTする方法(又は複数行をカンマ区切りで連結する方法) - iakioの日記

Postgres OnLine Journal Magazine Jan 2017 - May 2017というサイトが面白いです。

SELECT 'SELECT ' || array_to_string(ARRAY(SELECT 'o' || '.' || c.column_name FROM information_schema.columns As c WHERE table_name = 'officepark' AND c.column_name NOT IN('officeparkid', 'contractor') ), ',') || ' FROM officepark As o' As sqlstmt

How to SELECT ALL EXCEPT some columns in a table - Postgres OnLine Journal

実際のところそんなSQL構文は無いので、「あるカラム以外のすべてのカラムを出力するSQLを出力する」SQLになってます。

面白いのは、ARRAYコンストラクタでサブクエリから配列をつくって、array_to_stringでカンマ区切りのテキストにしているところです。これは応用できそうなテクニックです。これでMySQLのgroup_concatみたいなことがPostgreSQLでもできますね。

=> select * from tbl1;
  t
-----
 aaa
 bbb
 ccc
(3 rows)

=> select ARRAY(select t from tbl1);
   ?column?
---------------
 {aaa,bbb,ccc}
(1 row)

=> select array_to_string(ARRAY(select t from tbl1), ',');
 array_to_string
-----------------
 aaa,bbb,ccc
(1 row)

CahyoCahyo2013/04/05 20:00Your post has litfed the level of debate

zdrcjumzdrcjum2013/04/09 17:49lBUdT7 , [url=http://oxhfekwbqywp.com/]oxhfekwbqywp[/url], [link=http://ofryozyiljhg.com/]ofryozyiljhg[/link], http://lfiifncxjfxi.com/