程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2取浮點數的小數部分

DB2取浮點數的小數部分

編輯:DB2教程

DB2取浮點數的小數部分   一、最簡單,最快捷的方法 各種DB2版本通吃,使用floor函數、或cast函數取整數部分,然後用原來的數減去整數部分即可:  www.2cto.com   DB2 for i上面的查詢: [sql]  select 123.556 - floor(123.556) from qsys2/qsqptabl               ....+....1....+...                 Numeric Expression                             .556                   ********  End of data  ********    DB2 V10.1 for luw上面的查詢: [sql]  select 123.99-cast(123.99 as int),100.1-floor(100.1) from sysibm.sysdummy1   1                2   ---------------- --------               0.99      0.1   注意:這裡得到的數據直接為浮點數,可以進行數學運算   www.2cto.com   二、浮點數長度固定、小數位數固定,但實際存儲數值不確定的,如下處理: DB2 for i(AS400)上面的查詢 1.使用locate定位轉換為字符串後的小數點,然後再根據此小數點,接取整數和小數部分: [sql]  select substr(char(123.99),locate('.',char(123.99))+1),char(123.99)    from qsys2/qsqptabl                                                                          ....+....1....+....2....           SUBSTR   CHAR ( 123.99 )           99           123.99                ********  End of data  ********    2.使用position或者posstr函數定位小數點的位置 還是用上面的數據,得到如下的結果: [sql]  select char(123.99),                                                  substr(char(123.99),position('.' in char(123.99))+1),          substr(char(123.99),posstr(char(123.99),'.')+1)           from qsys2/qsqptabl                                          ....+....1....+....2....+....3...   CHAR ( 123.99 )  SUBSTR   SUBSTR        123.99       99       99        ********  End of data  ********     DB2 V10.1 for luw下面的查詢: [sql]  select char(123.99),          substr(char(123.99),          position('.' in char(123.99) using octets)+1),          substr(char(123.99),posstr(char(123.99),'.')+1)      from sysibm.sysdummy1   1       2       3   ------- ------- -------   123.99  99      99     三、若浮點數長度、小數位數固定,實際存儲值固定,如整數長度為3,小數位數為2,可如下處理:  www.2cto.com   DB2 for i(AS400)上面的查詢: [sql]  select char(123.99),                         right(trim(char(123.99)),2)      from qsys2/qsqptabl                                                                         ....+....1....+....2....          CHAR ( 123.99 )  RIGHT                123.99       99               ********  End of data  ********     DB2 V10.1 for windows上面的查詢: [sql]  select char(123.99),right(trim(char(123.99)),2) from sysibm.sysdummy1   1       2   ------- -------   123.99  99   注意:從這兩個DB2數據庫版本看出,數值轉換為字符串之後,長度都比原有其字符長度多1。 所以在接取字符串的時候,需要將其左右空格去掉(trim)。 這裡得到的數值為字符串,若需要進行其他計算或者比較,則應該將其轉換為數字進行操作; 使用顯示轉換,盡量避免DB2進行隱式轉換。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved