Sql 是";“数字”;及;编号(*,0)";甲骨文也是这样吗?
甲骨文中提到 数字(精度、刻度) 如果未指定精度,该列将按给定值存储值。如果 未指定比例,比例为零 但是Sql 是";“数字”;及;编号(*,0)";甲骨文也是这样吗?,sql,oracle,types,oracle11g,sqldatatypes,Sql,Oracle,Types,Oracle11g,Sqldatatypes,甲骨文中提到 数字(精度、刻度) 如果未指定精度,该列将按给定值存储值。如果 未指定比例,比例为零 但是NUMBER(无精度和刻度)也接受浮点数(34.30),但根据文档,如果未指定刻度,则默认为零刻度,因此只允许整数,我错了吗 其中提到 默认精度为38,默认刻度为零 所以NUMBER和NUMBER(*,0)应该相等,但它们不是 我哪里错了?刻度的默认值不是零,它没有值。因此,它可以接受-84到127之间的任何值。如果将其限制为零,则即使该值包含比例值,它也不会接受任何预测 create tab
NUMBER
(无精度和刻度)也接受浮点数(34.30),但根据文档,如果未指定刻度,则默认为零刻度,因此只允许整数,我错了吗
其中提到
默认精度为38,默认刻度为零
所以NUMBER
和NUMBER(*,0)
应该相等,但它们不是
我哪里错了?刻度的默认值不是零,它没有值。因此,它可以接受
-84到127之间的任何值。如果将其限制为零,则即使该值包含比例值,它也不会接受任何预测
create table aaaaa
(
sno number(*,0),
sno1 number
);
user\u tab\u列
将为您提供精度和刻度的值
SQL> select column_name,data_precision,data_scale from user_tab_columns where ta
ble_name = 'AAAAA';
COLUMN_NAME DATA_PRECISION DATA_SCALE
------------------------------ -------------- ----------
SNO 0
SNO1
SQL>
请查找以下工作
SQL> select * from aaaaa;
no rows selected
SQL> insert into aaaaa values (123.123123,123123.21344);
1 row created.
SQL> commit;
Commit complete.
SQL> select * from aaaaa;
SNO SNO1
---------- ----------
123 123123.213
SQL>
我认为文档中的句子
如果未指定精度,该列将按给定值存储值。如果未指定比例,则比例为零
这有点令人困惑。如果指定了精度而未指定刻度,则刻度为零。例如,NUMBER(19)
相当于NUMBER(19,0)
<代码>编号
本身将具有38位精度,但没有定义的刻度。因此,定义为数字的列可以接受任何比例的值,只要其精度为38位或更少(基本上是38位数字,任何位置都有小数点)
您也可以指定不带精度的刻度:NUMBER(*,)
,但这只会创建精度为38位的列,因此我不确定它是否特别有用
上的比例因子如何影响数值数据存储的表格可能会有所帮助。本部分绝对明确:
使用以下形式指定一个整数:
数字(p)
这表示精度为p且刻度为0的定点数字,并等效于数字(p,0)
及
使用以下形式指定浮点数:
数
缺少精度和刻度指示器可指定Oracle编号的最大范围和精度
星形精度的含义已记录在案,表示38的精度为什么列“SNO1”的“select”语句的输出仅限于“123123.213”?这是SQL客户机的限制吗?由于“数字”未设置小数位数限制,因此结果应为“123123.21344”(小数点后有五位数字)。作为补码,数字(*,0)相当于将INT或INTEGER写入类型。它在视觉上非常清晰,你会看到它创建了一个数字(38,0)。关于数字(*,0)和数字(38,0)之间的某些差异有一些讨论,但我认为这是非常微妙的。