[pgsql-jp: 25023] Re: 配列を含んだテーブルにUNIONするとエラーになる現象について

WADA Hiroyuki wada @ komine-ag.co.jp
2002年 2月 28日 (木) 21:14:51 JST


"kiyoshi.yoshida" wrote:

> 配列を含んだテーブルがあります。
> そのテーブルを参照するためにUNIONを用いると
> 
> ERROR:  Unable to identify an ordering operator '<' for type '_bpchar'
>         Use an explicit ordering operator or modify the query
> とはじかれてしまいます。
> 例えば、
> create table t2(a char[5],i int);
> なテーブルに対して、
> select * from t2 union select * from t2;
> すると上記現象が発生します。

UNIONというより、配列を比較するOPERATORを定義しないと並べ替えが
できないという問題でしょう。(そのまんまですが^^;)
SELECT DISTINCT(a) FROM t2;
とか
SELECT * FROM t2 ORDER BY a;
でも同じようなエラーになるはずです。

> どうしたらこのエラーを回避できるでしょうか。

UNION ALLを使えば(結果はともかく)回避はできます。
char[5]をソートできるようにoperatorを定義するのが本式。
(これも、ERRORに書いてあるまんまだなあ^^;)

和田@修行中



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