• 締切済み

数値を文字型に変換する時の書式設定が思い通りにできず悩んでいます。

Oracleの数値→文字型変換で  SELECT TO_CHAR(売上金,'FMS0000000D00') FROM XXX_TABLE のように文字型に変換する時に先頭に符号(+または-)をつけ、指定 した位置に小数点(ピリオド)をつけ、桁数に満たない部分(左側) には「0」をセットする事がどうしても必要になってしまいました。  上記例で「売上金」の属性がNUMBER(9,2)、値が 123.4だとした場合  処理結果として期待する文字列は、+0000123.40 です。 これと同じ変換を「SQL Server2000」で実行したいと思い、 SELECT STR(売上金,11,2)などとしてみましたが、  "     +123.40" のように左側が半角スペースになり「0」を   セットする事ができません。  SELECT CONVERT(CHAR(11),売上金,n)でも同様のようです。 SQLServer2000 どのようにすればできるか(あるいは不可能であるか) ご存じの方がお見えでしたら、ご教示いただけないでしょうか?

みんなの回答

  • 1E-9
  • ベストアンサー率51% (22/43)
回答No.1

断片的な参照で良ければですが。 right(('00000000000' + convert(varchar(11),convert(decimal(11),売上金))),11)) のように、桁数分の0を数値の頭につけてから、必要桁数をRightで抜き出すという方法を用いるようです。

KURO_0720
質問者

お礼

早速のご回答をいただき誠にありがとうございます。 right('00000000000' + ・・・ の場合、桁数分の0をサプライする 事はできるのですが、先頭1桁に符号(+または-)をつける事ができ なくて、悩んでおります。 もし良いお考えがございましたら、合わせてご教示いただけないで しょうか。 ※私の質問文の内容に、一部誤解を招く表現がございましたので、  一度、クローズさせていただき以下の訂正版の方に引き継がせて  いただきます。今後ともどうかよろしくお願いいたします。  (QNo.2629246)  数値を文字型に変換する時の書式設定が思い通りにできず悩んで  います。【訂正】