Jestem stosunkowo nowy w PostgreSQL i wiem, jak wpisać liczbę zerami po lewej stronie w SQL Server, ale staram się to rozgryźć w PostgreSQL.
Mam kolumnę liczbową, w której maksymalna liczba cyfr to 3, a min to 1: jeśli jest to jedna cyfra, to ma dwa zera po lewej, a jeśli ma 2 cyfry, ma 1, np 001, 058, 123.
W SQL Server mogę skorzystać z:
RIGHT('000' + cast([Column1] as varchar(3)), 3) as [Column2]
To nie istnieje w PostgreSQL. Każda pomoc będzie mile widziana.
format()
funkcję, która pozwoli Ci korzystaćformat(Column1,'000') as Column2
.Odpowiedzi:
Możesz użyć funkcji
rpad
ilpad
do wprowadzania cyfr odpowiednio w prawo lub w lewo. Zauważ, że to nie działa bezpośrednio na liczbach, więc będziesz musiał ich używać::char
lub::text
rzucać:źródło
printf
, te funkcje z główką kości po cichu przycinają sznurek do rozmiaru, jeśli nie pasuje. Więc możesz potrzebowaćcase when length(foo) ...
wokół tego.to_char()
Funkcja jest tam numerami format:fm
Prefiks ( „trybu napełniania”) zapobiega spacje w powstałych varchar. Po000
prostu określa liczbę cyfr, które chcesz mieć.Więcej informacji na temat obrazu formatu można znaleźć w podręczniku:
http://www.postgresql.org/docs/current/static/functions-formatting.html
źródło
to_char
konwertuje ją na ###. OoŁatwy jak
Bibliografia:
sqlfiddle: http://sqlfiddle.com/#!15/d41d8/3665
źródło
right()
w 9.1