【问题标题】:Select Only the Fractional Part of a Number's value仅选择数字值的小数部分
【发布时间】:2015-01-16 02:54:17
【问题描述】:

如何只选择小数点右侧的数值部分?

例如:

SELECT ____(10.1234) AS mynumber;

结果会在哪里:

.1234 (or 1234)

【问题讨论】:

    标签: mysql numbers decimal


    【解决方案1】:

    MOD function 应该可以工作:

    SELECT MOD(10.1234, 1);
    -- -> 0.1234
    

    【讨论】:

    • 我更喜欢这个解决方案,因为它只对表达式求值一次(这在许多情况下非常有用,例如,如果您调用 RAND() 或重和/或变异函数)
    【解决方案2】:

    只需减去整数部分:

    select mynumber - truncate(mynumber,0) from mytable;
    

    【讨论】:

      【解决方案3】:

      你也可以在下面使用...

      select substring_index(field1,'.',1), substring_index(field1,'.',-1) from table1;
      

      样本输出

      mysql> select substring_index(120.45,'.',1), substring_index(120.45,'.',-1) ;
      +-------------------------------+--------------------------------+
      | substring_index(120.45,'.',1) | substring_index(120.45,'.',-1) |
      +-------------------------------+--------------------------------+
      | 120                           | 45                             |
      +-------------------------------+--------------------------------+
      1 row in set (0.00 sec)
      

      【讨论】:

      • 使用 substring_index 字符串函数提取整数部分和小数部分.. (dev.mysql.com/doc/refman/5.0/en/…)
      • 如果您的号码没有“.” (整数),不能正常工作。
      猜你喜欢
      • 2019-07-06
      • 1970-01-01
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      • 2018-05-10
      • 2015-01-14
      • 1970-01-01
      • 2012-09-21
      相关资源
      最近更新 更多