在使用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 ...
有更优雅的解决方案吗?