【问题标题】:How to save numbers to mysql database as it is?如何按原样将数字保存到mysql数据库?
【发布时间】:2019-04-15 23:55:48
【问题描述】:

我需要将数字保存到数据库中,请参阅示例。

  • 目前我将数字保存为 22.5,在数据库中保存为 22。

  • 数据库中的数字设置为整数

    //sometimes $number can be "33.5" or "33" or "1" or "1.003"or "03"
    $sql = "INSERT INTO active (name, number) VALUES ('somename','$number')";
    

【问题讨论】:

  • 更改数据库中的列类型。
  • 据我所知,MySql 中的INT 仅支持整数(没有点)。要保持整数 DOUBLEREAL 可以用作类型。在极少数情况下,它甚至可以是FLOAT
  • 22.5 塞入INT 列就像将一具尸体塞进手提箱:需要切掉一些东西。
  • 使用小数列类型
  • 另外,033 是同一个数字。如果您需要这些不同,则必须将数字的表示形式存储为字符串 (VARCHAR),而不是数字本身(这对于数字实际上不是数字但通常不是数字的 ID 之类的东西是可以的你想要正确的数字)。第三,当心Bobby Tables

标签: php mysql sql number-formatting


【解决方案1】:

如果您将 number 列设为 DECIMAL 数据类型,它将包含所有数字的小数点。整数列不能包含小数点。

如果这不是您的要求,最好使用 VARCHAR 作为数据类型(但 不推荐)。

希望这会有所帮助。

【讨论】:

  • DECIMALFLOATREALDOUBLE PRECISION,具体取决于您的需要。 DECIMAL 总是为了钱;对于大多数其他用途,FLOAT 很好。
  • 为什么是DECIMAL?为什么不floatrealdouble?这取决于要求
  • 从不使用 varchar 存储十进制值。 始终使用适当的数据类型!
  • 是的,正确。 Varchar 因为问题中提到的 03
  • @user2767046:03中的前导零是什么意思
【解决方案2】:

首先,你需要检查active表的结构。根据您的问题,我了解到各种类型的数值将保存到 number 列。我猜active 表中number 列的类型是int 类型的数字。例如,INT 或 BIGINT 或任何其他整数类型。

这是我通常做的事情。只需将varchar 用于number 字段。听起来可能不专业。但它非常易于使用。通过这样做,将数值保存到列中不会有任何问题。我之前在将纬度和经度值保存到表格时遇到了类似的问题。并且 php 有很多函数可以从字符串中获取实际的 float 或 int 值。所以这是一种简单易行的修复方法。

【讨论】:

  • 你是对的,将十进制值存储为 varchar 不专业。
  • 其实并没有合适的数据类型来保存float、double、int等多种类型的值。使用 VARCHAR 并不意味着不专业的方式。甚至是推荐的方式。
  • @Kenny:推荐?
  • @HoneyBadger 永远不要说永远。我见过一个改变模式的库存系统,所以你有 ID 为0020 的旧文章和 ID 为000020 的新文章。当然,这些从来没有用于任何算术,所以不是真正的“数字”。如果您愿意,“字段的类型应该始终最适合存储其值”是我能得出的最接近规则的事情。我认为只有西斯的交易是绝对的:)
  • @Amadan:嗯,拥有像 0020000020 这样的文章编号实际上显示专业性 :-) 如果这些值从不用于任何算术,他们' re 只是一系列数字,因此应该存储为 (var)char,
【解决方案3】:

将数字/整数/浮点数保存到数据库的最简单可靠的方法之一是将它们转换为字符串,然后将它们存储到数据库中。

注意:您的数据库列类型应为字符串/文本类型。

这种方法的一个优点是可以克服 int/float/double 的限制。

$string_number = (string)$number;
$float_number = (float)$string_number;

【讨论】:

  • 一旦你进行一些计算,你就会再次受到 int/float/double 限制
【解决方案4】:

如果您想将数字保存为 22.5 并保存在数据库中。然后您需要更改表列结构。而不是 Integer/Int 设置为 float 然后 Next 设置长度 10,2 有关信息,请检查下面的屏幕简短

然后你得到正确的输出 快乐编程

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2014-02-28
    相关资源
    最近更新 更多