【问题标题】:mysql datatype for numbers maximum character length 19 precison 17数字的mysql数据类型最大字符长度19精度17
【发布时间】:2018-07-12 05:21:42
【问题描述】:

想知道是否有人可以帮助我解决 mysql 的数据类型问题。我希望能够加载最大字符长度为 19 但最大精度为 17 的数字(因此小数点后可以有 17 位数字)。我试过使用 float(19,17) 和 decimal(19,17) 但是当我尝试加载一个数字时,比如 02.11111111112222222 它不会捕获完整的数字。提前致谢

【问题讨论】:

    标签: mysql sqldatatypes


    【解决方案1】:

    【讨论】:

    • 简单优雅:)
    • @AniketSahrawat .. 还有 3 种类型 .. 或更多例如:`function { \n } .. 还有 yiur last 是一个很好的评论
    • 好吧 .. 无论如何我都使用了 .. for function .. class .{} ..a function not class \n {}
    【解决方案2】:

    Mysql 会将这个值存储为2.11111111112222222,即没有前导 0。

    检查十进制类型的mysql文档,它说: DECIMAL 列不存储前导 + 字符或 - 字符或前导 0 数字。如果将 +0003.1 插入 DECIMAL(5,1) 列,则将其存储为 3.1。对于负数,不存储文字 - 字符。

    前导 0 情况适用于您的值,mysql 不存储它。因此,您将2.11111111112222222 存储在表中。

    查看https://dev.mysql.com/doc/refman/5.7/en/precision-math-decimal-characteristics.html

    如果您想存储前导零以及通过在数据类型后包含 UNSIGNED ZEROFILL 来更改定义:

    CREATE TABLE your_table ( your_column DECIMAL(19,17) UNSIGNED ZEROFILL );

    只是做个笔记:

    1. 如果您输入2.11111111112222222,您将得到一个零填充,使小数点前的数字计数为19-17,并得到02.11111111112222222

    2. 如果您输入02.111111111122222,您将在右侧填充零,以使小数点后的数字计数为 17。

    【讨论】:

    • 非常感谢这已加载 - 我确实收到了标准内某些数字的截断警告,但仍按我的意愿加载。
    • 很高兴它帮助了你:)
    猜你喜欢
    • 1970-01-01
    • 2015-05-06
    • 2016-05-03
    • 2020-01-05
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多