アプリ版:「スタンプのみでお礼する」機能のリリースについて

どうしても分からないので教えてください。
先人の書いたphpの記述を解析しています。
postgreSQLとやり取りしている部分に、次のようなselect文の記述があります。

select lpad(seq_no,shiyo_keta,'0'),seq_min,seq_max from seqno_info where seq_key='YAMATODENPYO';

実行すると次のようなエラーがでます。

ERROR: 関数lpad(bigint, smallint, unknown)は存在しません

1: select lpad(seq_no,shiyo_keta,'0'),seq_min,seq_max from seqn...

(lpadのあたりに印が付いていましたが、ここではずれるので消してあります。)
HINT: 指定名称、指定引数型に合う関数がありません。明示的な型キャストが必要かも しれません


テーブルの型は次のようになっています。

\d seqno_info
Table "public.seqno_info"
Column | Type | Modifiers
------------+----------+-----------
seq_key | text | not null
seq_no | bigint |
seq_min | bigint |
seq_max | bigint |
shiyo_keta | smallint |


以下がそれぞれに入っているデータです。

select seq_no from seqno_info;
seq_no
--------
999
(1 row)

select shiyo_keta from seqno_info;
shiyo_keta
------------
3
(1 row)


調べても有力な情報が見当たらず困っています。
どなたか、ご教示ください。

A 回答 (1件)

postgreSQLのLPAD関数は引数の型が


文字列,数値,不定 となっています。
seq_noが数値なので、文字型でなければ
いけないLPADの第1引数に指定すれば、
当然ですが、掲題のようなエラーになります。

関数の意味としては前ゼロを付けて、
shiyo_ketaの示す長さでseq_noを表現
したいのではないかと思います。

lpad()の代わりに、以下の方法を使って
見てください。
to_char(seq_no,repeat('0',shiyo_keta))
    • good
    • 0
この回答へのお礼

ありがとうございます。
ご指摘のとおりやったら解決しました!

お礼日時:2014/03/10 18:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A