​"/> ​">

ホームページ >バックエンド開発 >PHPチュートリアル >SQL での数値フォーマットの例を共有する

SQL での数値フォーマットの例を共有する

零下一度
零下一度オリジナル
2017-06-28 15:41:392226ブラウズ

SQL ステートメントを使用して倍精度データをフォーマットします。たとえば、小数点以下の 2 桁のみを取り出します。
1。主なメソッド

-- 四捨五入を考慮せずに小数点以下の数値を取得します
select left('30000.72234', charindex('.', '30000.72234')-1)
where: charindex('.', '30000.72234 ') が取得されます。 -1 は小数点以下のすべてを意味します。小数点以降の n を取得したい場合は、+n と書きます。とても便利です。

-- 3 桁ごとにカンマで区切って、小数点以下 2 桁を残し、四捨五入を考慮しません。
select Convert(varchar, Cast(round(30000.72234,0) as Money), 1)

-- 3 桁ごとに区切ります。カンマあり、小数点以下は残らない、四捨五入を考慮してください
select left(convert(varchar, Cast(round(30000.72234,0) as Money), 1) , charindex('.', Convert(varchar, Cast(round(30000.72234,0) ) お金として)、1))-1)


2つ。 CASTとROUNDの比較
1.
SELECT CAST('123.456' as 10進数)は123となります(小数点は省略されます)。
小数点以下2桁を取得したい場合。
上記を
SELECT CAST('123.456' as 10mal(38, 2)) に変更する必要があります

===>123.46
自動的に四捨五入されます。

2.
SELECT ROUND(123.75633, 2, 1),
ROUND(123.75633, 2)
上記SQLで取得した2つの値は異なります。前者は123.75000、後者は123.76000です。 。
前者は四捨五入する前に切り捨てられており、小数点以下2桁が残っているためです。
後者はインターセプトされず、丸めると自然に 123.76000 になります


質問: Oracle データベースでクエリされた値の比率を計算する必要があります。次のような SQL:
Select Round((discount/Amount),2) from Dual;

この方法で計算された数値は、ほとんどのニーズを満たすことができます。ただし、1 未満の数値の場合は問題が発生します。.45 のようなデータが表示されます。 0.45 の前の 0 が消えています。

以下は、0が欠落している問題を解決する2つの方法をまとめています。

最初の解決策:
SELECT DECODE (TRUNC (1/100),0, REPLACE (1/100, '.', '0.'),TO_CHAR (1/100))
FROM DUAL;

あなたのみ1/100 を必要なパーセンテージに置き換える必要があります。

2番目の解決策:
SELECT RTrim(To_Char(1/100,'FM99999999990.9999'),'.') FROM Dual;

置換方法は上記と同じです。

2 つの方法の詳細な比較:

最初の式はより複雑ですが、普遍的な値を処理できます。

2 番目のものは単純に見えますが、書式設定された値の桁数は計算の桁数より大きくなければなりません。たとえば、 SELECT RTrim(To_Char(200,'FM90.9999'),'.') FROM Dual; 表示される値は、フォーマット範囲を超えているため、######## となります。

---------------------

テーブル tb のフィールド a の値が 0.4286 であることがわかりました。これを 42.9% のパーセンテージに変換するにはどうすればよいですか。 (小数点を保持) 小数点第 1 位)

select a from tb
0.4286
取得したい結果は
42.9%

SQL コード

select Cast(cast(a*100 as 10mal( 18,1)) as varchar) + '%' from tb


以上がSQL での数値フォーマットの例を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。