プロが教える店舗&オフィスのセキュリティ対策術

pl/sqlで
select
SUBSTR(LPAD(TO_CHAR(NVL(koza_no, 0)), 8, '0'), 2, 7),
from XXX;
とした時に、
to_charつけると全桁フルとか全桁スペースとかテストパターン色々やってみたけど7文字が14文字になっちゃうのです。
だから結局
SUBSTRB(LPAD(TO_CHAR(NVL(koza_no, 0)), 8, '0'), 2, 7)
にしましたが、なぜか分かる方、回答をお願いいたします。

A 回答 (2件)

>1桁目から取得できないのはちょっと謎ですが、2桁目から取得する方法を仕事場の>皆さんが試しているのでそれでいいらしいです。


>腑に落ちませんが。。。
Oracleの仕様です。数値型をTO_CHARで変換した場合の頭スペースは本来は符号(+)が入る所です。マイナスは-を表示しプラスはスペース(空白)となるのです。プラスの時に空白を取ることも可能です。
詳しくはリファレンスマニュアルのTO_CHAR関係をご覧ください。
    • good
    • 0
この回答へのお礼

ありがとうございました。
ORACLEの仕様ならば納得です。
「一般人」の方なのに物知りですね~
見習わなくちゃ★
どうもありがとうございました(^-^)/

お礼日時:2001/08/29 08:12

> 全桁フルとか全桁スペースとかテストパターン色々やってみたけど



この部分がよく分からないです。

koza_no ってのはNumberで、7バイトの前0埋めをしたいということだと思いますが、
私は全然問題ないと思います。

LPADで8バイトの0埋めをして、
あとから右7バイトを取っているのは、
koza_noに7桁以上の数字が入っている場合を考慮していると判断しました。

7文字が14文字になる...なぜでしょう...
役立たずにすみません。
    • good
    • 0
この回答へのお礼

ありがとうございました。
「全件フル」「全件スペース」はkoza_noの中身を中身を調べたり、スペースが入っているのか調べたりのテストです。
1桁目から取得できないのはちょっと謎ですが、2桁目から取得する方法を仕事場の皆さんが試しているのでそれでいいらしいです。
腑に落ちませんが。。。
回答書いてくださっただけでもありがたいことです。
ありがとうございました。(^-^)/

お礼日時:2001/08/17 12:37

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