[pgsql-jp: 33370] Re: Postgresql7.4.2 char列に対するmax関数の動作が7.3.3と異なる

aya shigeto_aya_za @ mail.toyota.co.jp
2004年 6月 24日 (木) 09:36:58 JST


返信ありがとうございます。

「これは、ほとんどのユーザが常にそうなってほしいと期待
している動作です。 」
とありますが、

以下、石田さんのプログラム例や私のプログラム例の時に
該当するか?

というと、どうなんだろう?
私はおかしいように感じます。

charをvarcharやtext型に変換するときの
後続ブランクを除くというのは、
「char型"AAAA    "というデータをvarcharに変換するとき」
と思うですが、これはどのようなときかというと、、

insert into A_table select * from B_tableという

ような構文があったときに、A_tableの列がvarcharで
B_tableの列がcharの時を指すように思います。

このときでもchar(10)をvarchar(20)に入れるとき、
"AAAA   "を入れるときに"AAAA"にするか
"AAAA   "にするかは微妙かと思うのですが、
" "というようにブランク一文字しかないときに、
""というように詰めてしまってよいかというと
期待していない動きに感じます、、、

最も期待するのはそのような動きをさせるか否かを
アプリを組む側で選択できるようにして頂くことと
思います。


以上


> 
> char(n)型での空白の扱いが 7.3 と 7.4 で違っていることが
> 原因かもしれません。
> 
> ====7.3.6
> =# SELECT '<' || ' '::char(5) || '>';
>  ?column? 
>  ----------
>   <     >
>   (1 row)
> 
> ====7.4.2
> =# SELECT '<' || ' '::char(5) || '>';
>  ?column?
>  ----------
>   <>
>   (1 row)
> 
> 7.4のリリースノートでは、
> http://www.postgresql.jp/document/pg743doc/html/release-7-4.html
> ====
> char(n) から varchar(n) もしくは textへの変換時、最後の空白は除去される
> ようになりました。 これは、ほとんどのユーザが常にそうなってほしいと期待
> している動作です。 
> ====
> とありますが、この辺の話なんでしょうか? > 識者の方
> 




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