2011年11月17日木曜日

PostgreSQLで文字列の結合(||)をすると勝手にトリムされる


開発中に「あれ?!」と思ったので記録の意味で。

DBからデータを引っ張っていて、フィールド定義はtext型だが、固定長で出力する必要があったため、
SELECT 'hoge ' || field1::char(20) FROM table1;
というように書いた。

が、結果は
hoge AAA↵(改行コード)
というように勝手にトリム(trim)されている。

なんで?と思って、調べたら文字列を結合する演算子の||は、返す型がtextのため、不要な空白は消してくれているらしい。

なので、実装には
SELECT 'hoge ' || rpad( field1, 20 ) FROM table1;
というようにしたら大丈夫になりました。

0 件のコメント: