使用 Postgresql 8.4,当字符串太长时,如何在不截断字符串的情况下右填充空格?
问题是当字符串实际上比要填充的字符数长时rpad
截断字符串。例子:
SELECT rpad('foo', 5); ==> 'foo ' -- fine
SELECT rpad('foo', 2); ==> 'fo' -- not good, I want 'foo' instead.
我发现的最短解决方案根本不涉及rpad
:
SELECT 'foo' || repeat(' ', 5-length('foo')); ==> 'foo ' -- fine
SELECT 'foo' || repeat(' ', 2-length('foo')); ==> 'foo' -- fine, too
但这看起来很丑恕我直言。请注意,我实际上并没有选择字符串“foo”,而是从列中选择:
SELECT colname || repeat(' ', 30-length(colname)) FROM mytable WHERE ...
有没有更优雅的解决方案?