Precision和Scale如何适用于Oracle的NUMBER数据类型?

问题描述 投票:1回答:2

如果我有一个长度为7个字符的ID字段,我将比例和精度设置为什么?这相当令人困惑。或者说一个电话号码为10个字符的字段......那么S和P是什么?

oracle
2个回答
2
投票

对于一系列数字,如电话号码或社会安全号码,邮政编码或ISBN,请考虑您将对其执行哪些操作。

你会在:

  1. 将它们加在一起,取平均值,用可变小数位数表示它们,乘以它们等等?
  2. 或者你会检查长度,将它们分成一个模式,需要保留任何前导零,提取一组字符(前三,后四),将它们与正则表达式进行比较等?

如果是前者,则它们是数字,您应该将它们存储为整数。如果是后者,则它们被限制为仅由某些字符组成的字符串,并且您应该将它们存储为具有适当检查约束的字符串。

我想现在你问的问题是“我的水族箱水应该保持什么温度以保持猫咪”?答案可能是,根本不应该这样做,因为你最终会被咬伤。


1
投票

对于ID,由于您不需要小数,因此精度为7且​​小数为0将适用于您的情况。对于电话号码,您可以使用varchar2或类似的东西,在这种情况下,比例和精度将不适用。

你提到了ID的“字符”,但我假设它是数字的。

有关Oracle规模和精度的文档可以在这里找到... http://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT1832

特别:

...您还可以指定精度(总位数)和比例(小数点右侧的位数)

请注意,虽然精度和比例是可选的,您甚至可能不需要担心像ID这样的东西。

更多例子可以在这里找到... What is the difference between precision and scale?

© www.soinside.com 2019 - 2024. All rights reserved.