我正在准备一些映射表,用于将实际的 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/