web-dev-qa-db-ja.com

なぜto_charはスペースで左パディングするのですか?

いつでも099は、3桁の0が埋め込まれたことを示し、左側にスペースができます。

SELECT '>' || to_char(1, '099') || '<';
 ?column? 
----------
 > 001<
(1 row)

なぜto_char左パディングはここですか?なぜ先行スペースがあるのですか?

5
Evan Carroll

あなたはここでより簡単なテストケースでそれを見ることができます

SELECT '>' || to_char(1, '0') || '<';
 ?column? 
----------
 > 1<
(1 row)

これは、@ Abelistoが言ったように、記号グリフ用にスペースが予約されているためです。

SELECT '>' || to_char(-1, '0') || '<';
 ?column? 
----------
 >-1<
(1 row)

the docs から、FMを使用して符号を抑制できます。

Modifier Description Example
FM       prefix      fill mode (suppress leading zeroes and padding blanks) FM9999

だからあなたが欲しいのは

SELECT '>' || to_char(1, 'FM099') || '<';

FM0でゼロを要求しても、ゼロは抑制されません。

8
Evan Carroll