【问题标题】:alternative column data type for REAL in MSSQLMSSQL 中 REAL 的替代列数据类型
【发布时间】:2014-03-12 11:55:59
【问题描述】:

如果我想将列数据类型从 REAL 更改为其他类型,例如 NUMERIC
我应该使用什么数据类型和精度? 即NUMERIC(?,?)

请帮忙~~谢谢。

这是我在当前列中拥有的数据类型为 REAL 的数据。

0.5 0.0086 2E-07 无效的 4 0.5 0.00375 1E-07

在进行查询时,我需要得到与往常完全相同的值,
但由于 php 驱动程序对 REAL 数据类型有一些问题,
我不能再使用 REAL。

我尝试在浮动中添加一个新列,
我使用更新 sql 子句将值复制到新列
并且新列完全按照我在 PHP 中查询的方式显示... :-(

这很烦人,因为如果我将 16.7 插入 REAL 列,
我在 SMS 中得到 16.7,在 PHP 查询中得到 16.700000762939。

这就是我试图寻找替代数据类型的原因。

先谢谢大家了。

【问题讨论】:

  • 也许你试图从错误的角度解决它?深入了解并解释php驱动存在的问题怎么样?
  • 您可以使用 FLOAT(M,D) 数据类型...类似于 REAL 。实际上更好。
  • @Tzar,这是 mysql 的 float 而不是 SQL Server 的语法。
  • @Rahul 哎呀……对不起。错过了!编辑:FLOAT(n) .. :)
  • Andrius,这是我的 php 驱动程序问题,仅供参考。 goo.gl/nmvn28

标签: php sql-server types


【解决方案1】:

如果您想要确切的值,请远离浮点数据类型,因为它是数字的虚构或近似表示。因此,使用 Float 数据类型,您可以获得与预期略有不同的结果。

使用 NUMERIC 或 DECIMAL 数据类型之一。哪些是唯一的数据类型允许您存储具有精确数字表示的小数值(有争议但有些精确)。 :)

阅读此处MSDN Documentation,了解有关 Sql Server 中不同数据类型的更多信息。

【讨论】:

  • 那么,如果使用 NUMERIC 而不会丢失精度会怎样?一千多谢~
  • 阅读 MSDN 文档以确定最适合您的方法。使用 NUMERIC 或 DECIMAL,您可以选择设置精度和比例,DECIMAL(p,s) 或 NUMERIC(p,s)。精度是值中的总位数,比例是小数点后的位数,例如 10.001 的精度为 5,比例为 3。现在您决定保存数据所需的精度。希望它有帮助,如果答案有帮助,请接受它:)
  • 我打开这个问题的目的是需要对 REAL 的 (p,s) 提出建议,我无法决定或理解 mssql(MSDN) 的定义,很遗憾我找不到 REAL = 方程的答案NUMERIC(p,s),什么数字是正确的ps....请帮忙...
  • 与 REAL 相等的数据类型是浮点数,但在您的问题中,您提到您想要一个精确的值。如果您选择浮动的 REAL equilant,则它不是精确值,您会得到意想不到的结果。浮点值仅精确到小数点后 17 位,之后任何数字都是任意的或近似的。或者你想要一个精确的值数据类型。我已经提到它是 NUMERIC 或 DECIMAL。
  • 我已经向您解释了什么是精度和规模。调查您的数据,找到具有最高精度和比例的值,并将这些值设置为新列的数据类型。我在这里说的再清楚不过了。
猜你喜欢
  • 2014-03-06
  • 2016-04-08
  • 1970-01-01
  • 2017-07-07
  • 2017-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多