• ベストアンサー

SQL Serverにおける小数部の0表記について

お世話になっております FLOAT型の数値を補正する為に、小数部10桁のdecimal型に変換すると 例えば 3.14 ならば 3.1400000000 と表示されてしまいます RTRIMで0を消そうと思ったのですが、SQL Serverでは0のRTRIMは対応していないようです FLOATやREAL型を使わずに、SQL Serverで小数部の0を消すには、どうしたら良いでしょうか? ご教授頂ければ幸いです

質問者が選んだベストアンサー

  • ベストアンサー
  • goo39
  • ベストアンサー率36% (13/36)
回答No.1

0をスペースに変更しRTRIMした後でスペースを0に戻すとか? REPLACE(RTRIM(REPLACE(表示値,'0',' ')),' ','0')

yachiru
質問者

お礼

画期的な手法をご教授頂きまして有難うございます! ただ、この方法だと、例えば  1059.00 → 1059. になるので、小数点が残ってしまうのですよ… 数値の表示は、やはりFLOT型じゃないと難しいのでしょうか

関連するQ&A

  • 入力値が小数なら、整数部・小数部の桁チェックをしたい。

    VB2005環境です。 テキストボックスに数値が入力された時、整数部分が4桁以上か、 小数部分が2桁以上になっている場合、警告メッセージを出したいと 考えています。 具体的には、 0.1→OK 99.9→OK 100.1→OK 0.01→NG 1001.9→NG 0.99→NG 1111→NG テキストボックスは数字以外の入力も許可しており、数字を 入力した場合だけのチェックです。 まずIsNumericで数値判定を行っているのですが、その後、上述の 小数桁チェックをどうしたら良いか悩んでいます。 また、99を入力した場合は99.0、09.1と入力した場合には9.1と、 整数部は一番左側に0があれば消し、小数部は未入力ならば".0"を 追加できたらと思っているのですが、うまくいきません。 実現するために必要な処理は、 ・入力値が数値か ・数値であれば、整数か、小数か ・整数部の桁チェック ・小数部の桁チェック(小数時) ・整数であれば、999.9の形になるよう変換 といったところかなと思うんですが、まず小数チェックで 躓いています。 参考にロジックを交えて教えていただけないでしょうか。 宜しくお願いします。

  • SQL Server において

     いつも大変お世話になっています。  早速質問させていただきます。  SQL SERVER で、数値演算を行いたいのですが、 どれが演算子になっているのかがよく分かりません(- -; 「+」だと文字列演算になってしまい、ならば、数値型に変換してからやればいいのだ!!とおもい、TO_NUMBER関数を使ったところ関数とは認識されませんでした(T T)。 一体どうすればいいのでしょうか?お願いします。教えていただきたいです。 Oracleの関数が使えない場合があるので、SQL SERVER で使用できる関数が載っているサイトなどがあったら教えていただきたいです。

  • 文字列変換の際に小数部の桁数を調整したい

    Visual Basic 2005で開発を行っています。 整数部や小数部の桁数チェックの為、Decimal型を一度String型へ変換し、 その後チェックを行っています。 しかし、「1.000」などという値でチェックが行われた時、ToString()した 時点でString型変数へ格納される値が「1.000」のままなので、チェックで 弾かれてしまいます。 「1.000」がチェック対象となった時、チェックする値は「1」となって欲しく、 「1.001」がチェック対象となった時は「1.001」のままであって欲しいです。 整数部も小数部も何桁来るかは分かりません。 (Decimalで収まる桁数であることは間違いありません) 先のように不要な小数部について除去されるような命令やフォーマット指定が 分からず悩んでいます。 どなたかご教示下さい。

  • 小数部を含む数字の3桁区切りで小数部を表示するには?

    小数部を含む数字を“number_format”で桁区切りすると、小数部が切り捨てられてしまいますが、小数部もそのまま表示するにはどうしたらよいでしょうか? 例えば、“123456.789”を“number_format(123456.789)”とすると、返り値は“123,456”となってしまうのを、“123,456.789”としたいのです。 御存知の方がおられましたら教えていただけますか? ちなみに、PHPは“4.4.4”で、レンタルサーバーなのでバージョンアップできません。

    • ベストアンサー
    • PHP
  • SQL Serverの型変換について

    こんにちは。 DB未経験で勉強中です! どなたか教えてください。。 OracleのTO_DATE関数のようなことはSQL Serverでは実現可能でしょうか? 数値型から日付型への変換です。 たとえば20121109を2012/11/09と変換、 もしくは201211を2012/11に変換するなどです。 是非、ご教授願いします。

  • SQL Server2000 と 2005 

    AccessとSQL Server(MSDE2000)で業務システムを作っています。 データを入力するフォーム(入力票)上でLotNoを入力すると該当する単価をビュー原料マスタから取得するようにしています。 LotNo(フォームのテキストボックス)の更新処理後のイベントに・・・ Me![単価] = Dlookup("単価","原料マスタ","LotNo = " & [Forms]![入力票]) としています。MSDE2000の場合は正しい値が取得できますが、SQL Server2005の場合は以下のエラーが出ます。 実行時エラー245  nvarcharの値 '.' をデータ型intに変換できませんでした。 ビュー「原料マスタ」の基になるテーブルの各項目は、 LotNo:nvarchar(13桁) 単価:float です。 どのようにするればよいでしょうか? 型を変換するような処理が必要なのでしょうか? 以上、よろしくお願いします。

  • 浮動小数点数の内部表現について教えてください

    float型の内部表現を表示するプログラムを書いていくつか試してみたのですが、どこからどこまでが仮数部でどこからどこまでが指数部なのか良くわかりません。 曲がりなりにも自分で考えた結果は次のとおりです。 10進表示: 内部表現 ;2進の指数表現 2 :01000000000000000000000000000000;10.0*10^0 4 :01000000100000000000000000000000;10.0*10^1 8 :01000001000000000000000000000000;10.0*10^10 16:01000001100000000000000000000000;10.0*10^11 32:01000010000000000000000000000000;10.0*10^100 また、 1 :00111111100000000000000000000000;0.1111111*10^0 0.5 :00111111000000000000000000000000;0.0111111*10^0 0.25:00111110100000000000000000000000;? 0.125:00111110000000000000000000000000;? 0.0625:00111101100000000000000000000000;? となりました。最上位ビットが符号だということは分かります。 質問をまとめると、 (1) 10進で 0.5 の2進指数表現は 0.0111111*10^0 ということなのでしょうか。もしそれで正解なら、どうして 0.1*10^0 としないでわざわざ丸め誤差を含む無限小数で表すのでしょうか。 (2) 仮数部と指数部のビットは決められていなくて、例えば状況によって仮数部のビットが少なくなり指数部のビットが多くなったりするのでしょうか。 (3)仮数部での小数点はどこにあるのでしょうか。 (4)float 型の小数精度は最小6桁ということですが、これは10進で6桁なのか2進で6桁なのか教えてください。 どれか一つでも教えていただけると助かります。 使ったコンパイラは Borland C++ Compiler 5.5 です。 }

  • 小数の四捨五入

    お世話になります。 タイトルのとおりなのですが、ただ0.2332232…みたいな小数ではなく、 DBから取得した小数で、 2.46674e+007 のような感じで後ろに+~という文字がついてしまっている小数の四捨五入の仕方です。 これをroundで四捨五入すると、0になってしまいます。 // $float_numが2.46674e+007だとして // 小数第3位まで取得 $float_num = round($float_num,3); 出力結果:24667400 2.467という値を取得したいです。 どうかご教授いただけないでしょうか。

    • ベストアンサー
    • PHP
  • SQL Serverについて

    ASP部かSQL部かどちらで質問すればいいのかわからなかったのですが、系統的にこちらかと思い質問させていただきます。 ASPを使用しましてSQL Serverに接続しているのですが、 接続するUser,Passwordは通常接続するのに多数のユーザが使用する際は 個々にUser,Passwordを発行してクエリー作業を実行します。 それはそれぞれの干渉などのデータ損失などの問題を解消するためのようですが、 ASPの場合はサーバで処理後「結果」をクライアントへ送信する。というものですよね? つまり処理をするユーザはサーバのみとの考え方になると思ったのですが、 それの場合はSQL Server のUser,Passwordを個々に発行する必要はないのでしょうか? ご教授をよろしくお願いします。

  • 32bitの浮動小数点数表現について悩んでいます

    情報処理の初心者です。 今、14070366(10)を数値データとしてとらえ、 32bitの浮動小数点数で表現するという問題について考えています。 14070366(10) =100111000001010000101110(2) 10進数を2進数に基数変換した部分、25桁が仮数部になるんですよね? 符号部は+なので0。 では指数部の7桁には何が入るのでしょうか? 以上が私の分かっていることですが、 最終的な解答を16進数で表記すると、 14070366はどうなるのでしょうか? お願いします。