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

时间:2013-09-23 06:13:25

标签: oracle

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

2 个答案:

答案 0 :(得分:2)

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

你会成为:

  1. 将它们加在一起,取平均值,用可变小数位数表示它们,乘以它们等等?
  2. 或者你会检查长度,将它们分成一个模式,需要保留任何前导零,提取一组字符(前三个,后四个),将它们与正则表达式进行比较等等?
  3. 如果是前者,则它们是数字,您应该将它们存储为整数。如果是后者,则它们被限制为仅由某些字符组成的字符串,并且您应该将它们存储为具有适当检查约束的字符串。

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

答案 1 :(得分: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?