虚位以待(AD)
虚位以待(AD)
首页 > 数据库 > DB2数据库 > DB2取浮点数的小数部分

DB2取浮点数的小数部分
类别:DB2数据库   作者:码皇   来源:互联网   点击:

DB2取浮点数的小数部分一、最简单,最快捷的方法各种DB2版本通吃,使用floor函数、或cast函数取整数部分,然后用原来的数减去整数部分即可: www 2cto com DB2 for i上面的查询:[sql]select 123 556 - f
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进行隐式转换。
相关热词搜索: DB2 取 浮点数