"/>  ">

首頁  >  文章  >  後端開發  >  分享SQL中的數位格式化實例

分享SQL中的數位格式化實例

零下一度
零下一度原創
2017-06-28 15:41:392210瀏覽

用sql語句來格式化double型的數據,例如,只取出小數點後面的兩位
一。主要方法

--取小數位前數字,不考慮四捨五入
select left('30000.72234', charindex('.', '30000.72234')-1)
其中:charindex(' .', '30000.72234')獲得小數點的位置;-1則表示在小數點前面的全部,如果想獲取小數點後面的n為,寫成+n就可以了。還挺好用的。

--每三位用逗號相隔,留2位小數,不考慮四捨五入
select convert(varchar, cast(round(30000.72234,0) as money), 1)

--每三位用逗號相隔,不留小數位,考慮四捨五入
select left(convert(varchar, cast(round(30000.72234,0) as money), 1) , charindex('.', convert( varchar, cast(round(30000.72234,0) as money), 1))-1)


二。 CAST與 ROUND的比較
1.
SELECT CAST('123.456' as decimal)  將會得到 123(小數點後面的將會被省略掉)。
如果希望得到小數點後面的兩位。
則需要把上面的改為
SELECT CAST('123.456' as decimal(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的問題。

第一種解:
SELECT DECODE (TRUNC (1/100),0, REPLACE (1/100, '.', '0.'),TO_CHAR (1/100))
FROM DUAL;

大家只要在1/100的地方替換成自己需要的百分數就可以了。

第二種解:
SELECT RTrim(To_Char(1/100,'FM99999999990.9999'),'.') FROM dual;

#取代方式和上方相同。

兩種方式的詳細比較:

第一種公式比較複雜,但可以處理通用的數值。

第二種看起來簡單,不過格式化的值的位數一定要大於計算的位數才行。例如 SELECT RTrim(To_Char(200,'FM90.9999') ,'.') FROM dual;顯示的就是


,因為已經超過了格式化的範圍。

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


我在表格tb中查出字段a的值為0.4286,怎樣可以轉為百分數42.9%(小數點後保留一位小數) 
例如 
select a from tb 
0.4286 
我想得到的結果為 

42.9%


############################################################################################################################################################################################################### ####SQL code######select cast(cast(a*100 as decimal(18,1)) as varchar) + '%' from tb####################################################################################################################################################################################################################################

以上是分享SQL中的數位格式化實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn