mysql - 如何知道 float 中小数点右边的位数?

标签 mysql regex

我正在准备一些映射表,用于将实际的 MYSQL 数据库迁移到新的 ORACLE 数据库。一些数据被定义为 float ,但我想确切地知道该点后具有最大小数的列中值的长度。这将帮助我限制数据类型,而不是将其声明为数字。

在 MySQL 中是否有一种简单的方法可以做到这一点?我尝试过使用正则表达式,但它不匹配所有值(我找到了类似 7.34397493274 的值),但以下正则表达式无法检索它:

SELECT column
from `db`.`table`
where column REGEXP '^-?[0-9]+\.[0-9]{7,}$' =1;

谢谢

最佳答案

你走错了路。对于“ float 中小数点右边有多少位”没有方便的答案。 float 的“精度”是有答案的。即23。精度和 float 右边的数字之间的关系取决于比例因子。

您可能需要查看标题为 Problems with Floating Point Numbers 的文档。

更具体地说,问题是特定数字可能表示为:

1.200000000001

1.199999999997

(我并不是说这些是实际的表示,只是示例。)您会给小数点右侧的数字赋予什么值?通过将值表示为 float ,数据库丢失了此信息。

相反,您有多种选择:

  • 只需使用 NUMBER,这通常是一个合理的类型。
  • 使用 BINARY_FLOAT,这将是相同的类型。
  • 了解应用程序以确定实际需要多少位小数。
  • 用表示法玩游戏,寻找由 0 和 9 组成的字符串(例如连续四个),并假设它们不重要。

关于mysql - 如何知道 float 中小数点右边的位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29794900/

相关文章:

php - 通过 PHP 和 MySQL 查询将一批 key 提交到数据库

Mysql更新查询IN语句

javascript - 使用 Node JS 将 HTML 表单数据传输到 MySQL 不起作用

javascript - Gmail 类型 javascript 正则表达式 - 不允许重复无效字符

python - [Python] : Python re. 长字符串行的搜索速度优化

php - 使用parent id搜索时如何查询产品?

mysql - R Shiny 中的selectInput

regex -/m 修饰符的 perl 正则表达式意外行为

php - 为什么这个计数总是返回 1?

regex - 如何仅对包含大写字母的单词进行grep