【问题标题】:Create table with numeric column创建带有数字列的表
【发布时间】:2019-09-21 20:02:17
【问题描述】:
CREATE TABLE SampleMath
(m  NUMERIC (10,3),
 n  INTEGER,
 p  INTEGER);

问题:为什么NUMERIC(10,3) 之间有一个空格。

起初,我以为(10,3) 是列约束。然而,这似乎并不正确,因为常见的约束是NOT NULLUNIQUE,如here 所列。

然后我认为它可能是documentation 中描述的数据类型NUMERIC 的属性(精度、比例)。在那种情况下,我认为NUMERIC(10,3) 之间不应该有空格。我还尝试删除两者之间的空间,看来代码仍然有效。在我的理解中,如果是属性,就不应该有空格,这让我很困惑。

任何澄清这一点的帮助将不胜感激。提前感谢您的帮助。

【问题讨论】:

  • SQL 允许在大多数运算符和标识之间使用空格,包括类型与其长度(或精度和小数位数)之间的空格。
  • 谢谢。以前不知道这个。现在一切对我来说都更清楚了。
  • 。 .我应该补充一点,换行符和制表符也是允许的。大多数语言都是这样工作的。

标签: sql postgresql sqldatatypes


【解决方案1】:

NUMERIC (10,3) 是一种数据类型。它可以存储一个总共10位的数字(即所谓的precision),包括3位小数(又名scale,即小数点右边的位数)。所以基本上它可以存储的最大数字是9999999.999

NUMERIC 之间的空格和它的小数位数和精度的定义没有意义。即使是新行也可以,例如:

CREATE TABLE SampleMath
(m  NUMERIC 
        (10,3),
 n  INTEGER,
 p  INTEGER);

【讨论】:

  • 你的意思是删除NUMERIC(10,3)之间的空格会更好。一个后续问题是为什么如果我们添加 SQL 不会引发错误,因为它可能会将 (10,3) 混淆为约束。
  • 我的意思是这个空间对 Postgres 没有意义。你可以没有空间,一个空间,几个空间,这根本没有区别。关于约束,它们有不同的语法,没有混淆的风险。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-30
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
  • 2022-11-01
  • 2019-08-31
相关资源
最近更新 更多