【问题标题】:How can I add values into MySQL if the value is either string or float? [closed]如果值是字符串或浮点数,如何将值添加到 MySQL 中? [关闭]
【发布时间】:2017-02-16 11:38:13
【问题描述】:

我正在解析一个 excel 文件并将值添加到数据库中。但我正在解析的列之一可以是浮点数或字符串。像这样:0,45Contact Support。我将其按原样添加到我的数据库中的最佳方式是什么?或者更多我应该如何为此格式化我的数据库列?

【问题讨论】:

  • 或者更好的是如何修复我的数据?这就是你应该问的问题
  • Excel 可以轻松存储不一致和令人沮丧的数据(这就是为什么管理层和营销部门喜欢它而 IT 部门讨厌它)。您需要将这些错误传输到数据库中还是修复它们?
  • 在不知道存储数据的目的以及之后打算如何处理数据的情况下,很难提出明智的建议。很容易推荐有 2 个字段,一个用于浮点数,另一个用于字符串,但是,从报告的角度来看,这可能完全不切实际。您需要考虑您的报告要求并据此做出决定。就目前而言,您的问题无法得到负责任的回答。

标签: mysql


【解决方案1】:

使用 varchar 数据类型(在 MySQL 中) 用于您要解析的列,您可以保存整数和字符值。

【讨论】:

  • 因此,如果我将 1,0 添加到 varchar 值中。如果我将其检索,它是浮点数还是字符串?
  • @FelixRosén 它将是字符串!
  • 好的!所以没有真正的方法来检查它。如果您正在解析的 excel 行中有字符串并在其中浮动,则将所有内容存储为字符串。
  • @FelixRosén。是的。由于 varchar 旨在包含字符和符号,因此数据将被视为字符串。
  • @FelixRosén。要获取整数/字符串值的结果,您必须编写查询以将其作为正则表达式进行检查。
【解决方案2】:

我建议您创建一个float 类型列一个varchar 列。编写您的解析器,以便将有效的浮点值填充到浮点列,其余的填充到 varchar 列。这将允许您按浮点类型列的值对数据库进行排序,并对缺少该值的字段运行查询:SELECT * FROM mytable WHERE myfloat IS NULL

【讨论】:

  • 当我检索数据时,我会检查两列,如果其中一列为空,则从另一列获取数据(如果 myfloat 为空,则从 myVarchar 获取数据?
  • @FelixRosén,正确。您还可以构建您的查询,以便在浮点数为 null 时使用 SELECT CASE 或类似的东西返回字符串。
【解决方案3】:

首先是Kaivosukeltaja 的答案。

但如果您不能这样做,请创建一个 varchar 列来保存字符串或双精度数。

顺便说一句,当您从数据库中获取数据时,所有数据都以字符串格式出现,然后您可以将其转换为您想要的任何类型。

如果您使用的是 PHP:

$x = $row['string_double_column'];

if(is_numeric($x))
  return doubleval($x);
else
 return $x;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多