在mysql中的单个列中使用整数和小数

在mysql中的单个列中使用整数和小数,mysql,decimal,Mysql,Decimal,我是一个音乐评论家,我想建立我的网站。 我已经在mysql中建立了一个数据库,其中有一列用于评级。 以下是可能性:10,9.5,9,8.5,8,7.5。。。1、0.5和0 我可以使用哪种列,因为现在我选择值为:3,1的十进制 问题是当我输入9时,它返回9.0。。。有没有办法将整数值和小数存储在一列中?将它们存储为小数,但作为100的一部分。9.9等于99。然后使用php除以10并将其转换为双精度。 您可以通过添加小数点和0来强制转换为double 结果/10.0将它们存储为十进制,但作为100的

我是一个音乐评论家,我想建立我的网站。 我已经在mysql中建立了一个数据库,其中有一列用于评级。 以下是可能性:10,9.5,9,8.5,8,7.5。。。1、0.5和0

我可以使用哪种列,因为现在我选择值为:3,1的十进制


问题是当我输入9时,它返回9.0。。。有没有办法将整数值和小数存储在一列中?

将它们存储为小数,但作为100的一部分。9.9等于99。然后使用php除以10并将其转换为双精度。 您可以通过添加小数点和0来强制转换为double


结果/10.0

将它们存储为十进制,但作为100的一部分。9.9等于99。然后使用php除以10并将其转换为双精度。 您可以通过添加小数点和0来强制转换为double


结果/10.0

您将值与表示混为一谈。如果没有对这些值进行算术运算(只比较它们),那么您可以考虑将它们存储为字符串。

或者,选择要打印的值时,可以根据需要格式化这些值:

select (case when rating % 1 = 0 then format(rating, 0)
             else format(rating, 1)
        end)

您正在将值与表示合并。如果没有对这些值进行算术运算(只比较它们),那么您可以考虑将它们存储为字符串。

或者,选择要打印的值时,可以根据需要格式化这些值:

select (case when rating % 1 = 0 then format(rating, 0)
             else format(rating, 1)
        end)

为了格式化要显示的数字,您可以用解析mysql结果的任何语言进行这种处理。例如,在PHP中,您只需将其转换为浮点并打印它

$string = '9.0000000';
echo (float)$string;

这将打印“9”。

为了格式化要显示的数字,您可以用解析mysql结果的任何语言进行这种处理。例如,在PHP中,您只需将其转换为浮点并打印它

$string = '9.0000000';
echo (float)$string;

这将打印“9”。

嗯,按照我的方式,在php中使用if?double将9.0更改为9并不容易,但精度要低得多。因为他们是如何工作的,你将来更可能会遇到问题。用数学和比较。如果你开始做平均值或其他比较,你可能会遇到问题。我会查看double是如何工作的,因为它们在可能的情况下是最好避免的,就像单精度浮点数一样。嗯,如果使用if?double,在php中将9.0改为9不是更容易吗。因为他们是如何工作的,你将来更可能会遇到问题。用数学和比较。如果你开始做平均值或其他比较,你可能会遇到问题。我会查看双精度浮点数是如何工作的,因为它们在可能的情况下是最好避免的,就像单精度浮点数一样。是的,我只想对它们进行比较,只是对它们进行排序,如果我将它们存储为字符串并对它们进行排序,结果将是:0,0.5,10,1,1.5,2…@faf。您可以始终使用
排序依据(评级+0)
。是的,我只想比较它们,只是对它们进行排序,如果我将它们存储为字符串并对它们进行排序,结果将是:0、0.5、10、1、1.5、2…@faf。您始终可以使用
按顺序(评级+0)
。专用格式最好在应用程序中完成。专用格式最好在应用程序中完成。