[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 メーリングリストの案内