【发布时间】:2018-11-12 16:40:18
【问题描述】:
我在 mysql 中遇到了一些关于数据类型的问题
我有下表:
id (int,primary key),
tipo (varchar(45)),
inteiro_pedaco (varchar(45)),
marca (varchar(45)),
a (decimal(11,1),
b (decimal(11,1),
c (int (11))
A 和 B 列应存储以下格式的数据:00.0、00.1 等。
但是,A 和 B 列也应该能够像 INT 一样存储数据,而不仅仅是十进制,但是,如果我尝试输入“10”,它会自动格式化为“10.0”
最大的问题是:这两列(A 和 B)必须存储 10 作为值,其他时候存储 10.0,即使 10.0 等于 10,它也必须完全按照发送的方式存储,不管有没有小数点。如果输入为 10,则必须存储为 10,如果输入为 10.0,则必须为 10.0
我知道这听起来很奇怪,但相信我,它有时会接收 10.0 的数据,我没有使用 10.0 作为示例,它确实会接收 10.0 和 10 的数据
我尝试阅读有关数据类型的信息,但除了 varchar 之外,我找不到任何满足这些要求的人,但在这种情况下我不能使用 varchar,而且,我不能创建两个单独的列来存储数据,它们必须在同一个专栏
我正在考虑将所有内容保存为十进制,并在进行选择时对其进行格式化,但在这种情况下,我必须创建一个新列来存储它是否为十进制
那么,有什么数据类型符合上面的描述吗?如果没有,格式化是做我想做的唯一方法吗?
感谢您的帮助
【问题讨论】:
-
您的数据似乎很混乱。该值是一个数字,尾随的零无关紧要。或者该值是一个字符串,算术实际上没有意义。值包含什么?
-
试试浮点数据类型
-
只会存储数字,但是,我也不喜欢这种存储数据的方式,不幸的是,我没有太多选择,因为我只是按照人们告诉我的去做。我得说,我的数学很烂,我的老板试图向我解释为什么必须这样,但我一点也不明白,而且他不太懂编程(在我的情况下,我还在学习,我只是实习生),所以我认为我可以尝试检查是否有可能,但是从它的样子来看,我认为我必须再次与我的老板联系,看看我们会做什么,并尝试向他解释为什么会这样不可能
-
@saravanatn,我试过float,但是没有用
-
我不知道
10和10.0之间有什么区别?
标签: sql mysql-workbench sqldatatypes