1

タイプのフィールドを含むテーブルがありますnumeric(28,10)。レコードを等幅フォントで表示し、右揃えで整列するように小数点以下の桁数を一致させたいと思います。

各レコードを表示するときにそれに応じてフォーマットできるように、特定の結果セットで検出できる小数点以下の最大桁数を把握する方法はありますか?

編集:申し訳ありませんが、もっと明確にすべきでした...結果セットに小数点以下3桁のみの数値が含まれている場合、すべての数値の小数点以下3桁のみ(ゼロが埋め込まれている)である必要があります。

4

2 に答える 2

1

等幅フォントは完全にプレゼンテーションの問題です...

私がテストしたとき、正しい位置合わせの必要性はわかりません。

CREATE TABLE [dbo].[Table_1](
  [num] [numeric](28, 10) NOT NULL
)

INSERT INTO [example].[dbo].[Table_1] VALUES (1.1234567890);
INSERT INTO [example].[dbo].[Table_1] VALUES (1.123456789);
INSERT INTO [example].[dbo].[Table_1] VALUES (1.1234567);

SELECT [num]
  FROM [example].[dbo].[Table_1]

...戻り値:

num
---------------
1.1234567890
1.1234567890
1.1234567000

だから問題は-あなたが望む出力をあなたに与えていないことをあなたは何をしようとしているのですか?

于 2010-09-26T23:48:43.170 に答える
0

結果をどこに表示しますか?クエリアナライザ?アプリケーションでは?

あなたはどちらかをすることができます

 a) format the column to have a
    finite number (known in advance) of
    digits to the right of the decimal
    point, truncating at that position;
    this is the typical practice or

 b)    read through all of the rows in the
    resultset to determine the value
    with the greatest number of digits
    to the right of the decimal point 
    (casting to string, splitting the
    value using the decimal point as
    delimiter, and getting the length of
    the decimal-fraction string)

何らかの理由でオプションa)が受け入れられない場合は、b)ストアドプロシージャのサーバー側またはクライアントプログラムのクライアント側のいずれかで手順を実行する必要があります。

于 2010-09-26T23:45:27.077 に答える