Я относительно новичок в PostgreSQL, и я знаю, как дополнить число нулями слева в SQL Server, но я изо всех сил пытаюсь понять это в PostgreSQL.
У меня есть числовой столбец, где максимальное количество цифр - 3, а минимальное - 1: если это одна цифра, у нее два нуля слева, а если это 2 цифры, у нее 1, например 001, 058, 123.
В SQL Server я могу использовать следующее:
RIGHT('000' + cast([Column1] as varchar(3)), 3) as [Column2]
Этого нет в PostgreSQL. Любая помощь будет оценена.
format()
функция, которую вы можете использоватьformat(Column1,'000') as Column2
.Ответы:
Вы можете использовать
rpad
иlpad
функцию для чисел прокладочных вправо или влево, соответственно. Обратите внимание, что это не работает напрямую с числами, поэтому вам придется использовать::char
или::text
приводить их:источник
printf
, эти функции с костяной головкой беззвучно нарежут вашу струну до нужного размера, если она не подходит. Так что вам может понадобитьсяcase when length(foo) ...
вокруг него.to_char()
Функция есть на номера формата:fm
Префикс ( «режим заполнения») позволяет избежать начальных пробелов в результате VARCHAR.000
Просто определяет количество цифр , которые вы хотите иметь.Дополнительные сведения о формате изображения см. В руководстве:
http://www.postgresql.org/docs/current/static/functions-formatting.html
источник
to_char
преобразует его в ###. ОоТак же легко, как
Ссылки:
sqlfiddle: http://sqlfiddle.com/#!15/d41d8/3665
источник
right()
в 9.1