仅选择数字值的小数部分

24

如何仅选取数字值中小数点右侧的部分?

例如:

SELECT ____(10.1234) AS mynumber;

结果将会是什么:

.1234 (or 1234)
4个回答

34

MOD函数应该可以正常工作:

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

1
我更喜欢这个解决方案,因为它只评估一次表达式(在许多情况下非常有用,例如如果您调用RAND()或一个重型和/或可变函数)。 - gaborsch

5

您还可以使用以下方法来获取有关IT技术的最新信息:

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字符串函数来提取整数部分和小数部分。 (https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring-index) - Phaneendra
如果您的数字没有小数点(即整数),那么它将无法正常工作。 - Frédéric Klee

3

只需减去整数部分:

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

0
使用 floor() 函数。
select mynumber - floor(mynumber) from mytable

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接