[sql] postgreSQL에서 왼쪽으로 0 채우기

저는 PostgreSQL을 처음 접했고 SQL Server에서 왼쪽에 0으로 숫자를 채우는 방법을 알고 있지만 PostgreSQL에서 이것을 파악하기 위해 고군분투하고 있습니다.

최대 자릿수가 3이고 최소값이 1 인 숫자 열이 있습니다. 한 자리이면 왼쪽에 두 개의 0이 있고 2 자리이면 1이 있습니다 (예 : 001, 058, 123).

SQL Server에서는 다음을 사용할 수 있습니다.

RIGHT('000' + cast([Column1] as varchar(3)), 3) as [Column2]

PostgreSQL에는 존재하지 않습니다. 어떤 도움을 주시면 감사하겠습니다.



답변

rpadlpad함수를 사용하여 각각 오른쪽 또는 왼쪽으로 숫자를 채울 수 있습니다. 이것은 숫자에서 직접 작동하지 않으므로 사용 ::char하거나 ::text캐스트해야합니다.

SELECT RPAD(numcol::text, 3, '0'), -- Zero-pads to the right up to the length of 3
       LPAD(numcol::text, 3, '0'), -- Zero-pads to the left up to the length of 3
FROM   my_table


답변

to_char()기능은 숫자 형식을 지정하는 데 있습니다.

select to_char(column_1, 'fm000') as column_2
from some_table;

fm접두사 ( “채우기 모드”) 결과 VARCHAR에서 선행 공백을 방지 할 수 있습니다. 은 000단순히 당신이 갖고 싶어 자리의 수를 정의합니다.

psql (9.3.5)
도움말을 보려면 "help"를 입력하십시오.

postgres => with sample_numbers (nr) as (
postgres (> 값 (1), (11), (100)
postgres (>)
postgres-> to_char (nr, 'fm000') 선택
sample_numbers의 postgres->;
 to_char
---------
 001
 011
 100
(3 열)

postgres =>

형식 그림에 대한 자세한 내용은 http://www.postgresql.org/docs/current/static/functions-formatting.html 설명서를 참조하십시오
.


답변


답변