web-dev-qa-db-ja.com

postgreSQLの左側にゼロを追加する

私は比較的PostgreSQLに慣れておらず、SQL Serverで数値を左にゼロで埋める方法を知っていますが、PostgreSQLでこれを理解するのに苦労しています。

私は最大桁数が3で最小が1である数字列があります.1桁の場合は左に2つのゼロがあり、2桁の場合は1です。 001、058、123。

SQL Serverでは、次を使用できます。

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

これはPostgreSQLには存在しません。任意の助けをいただければ幸いです。

74
Ben

rpadおよびlpad関数を使用して、それぞれ数値を右または左に埋め込むことができます。これは数値に対して直接機能しないため、::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
139
Mureinik

to_char()関数は、数値をフォーマットするためにあります。

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

fmプレフィックス(「フィルモード」)は、結果のvarcharの先頭のスペースを避けます。 000は、必要な桁数を定義するだけです。

 psql(9.3.5)
 helpに「help」と入力します。
 
 postgres => sample_numbers(nr)as(
 postgres( >値(1)、(11)、(100)
 postgres(>)
 postgres-> to_char(nr、 'fm000')
 postgres-> from sample_numbers; 
 to_char 
 --------- 
 001 
 011 
 100 
(3行)
 
 postgres =>

フォーマット画像の詳細については、マニュアルを参照してください。
http://www.postgresql.org/docs/current/static/functions-formatting.html

51
11
zerkms