2017-12-11 18 views
0

タイプのtattooの列があります。これに3桁のゼロを左に埋めておきたい。 N009は000N009になるはずです。Varcharのゼロから左パディング

to_char(integer/double precsion/int/timestamp,text)ですが、これを行う方法はありますか?varchar

キャスティングvarchar(20)~integerも機能しませんでした。私のコードのいくつかは、以下に追加されました:

select tattoo,to_char(tattoo,'0000FM')::varchar as tm from animals where soc_code = 'AURO' limit 100 
select tattoo,to_char(tattoo::integer,'0000FM')::varchar as tm from animals where soc_code = 'AURO' limit 100 
select tattoo,to_char(cast(tattoo as integer),'0000FM')::varchar as tm from animals where soc_code = 'AURO' limit 100 

整数とfunction_to_charの無効な入力構文が存在しないというエラーがスローされます。

答えて

0

は、あなたが、私はこれが3ゼロで左埋められたいLPAD()

select LPAD(tattoo, 7, '0') 
1

を試してみました。 N009は000N009になるはずです。

あなたはこれを考えすぎるかもしれません。ただ、concatenateNULLある

SELECT '000' || tatoo; 

tatoo場合は、その結果です。

+0

私はそれが簡単な方法であることに同意します。しかし、 '000' ||タトゥー結果は常に前面に3つのゼロになります。入れ墨がKN009の場合は00KN009になります。タトゥーがJKN009の場合、結果は0JKN009でなければなりません。 – TechPathi

+0

@TechPathi:わかった。しかし、それは問題が求めていることではありません。他の答えが示唆するように、['lpad()'](https://www.postgresql.org/docs/current/static/functions-string.html)を使ってください。 –

関連する問題