Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 是";“数字”;及;编号(*,0)";甲骨文也是这样吗?_Sql_Oracle_Types_Oracle11g_Sqldatatypes - Fatal编程技术网

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)之间的某些差异有一些讨论,但我认为这是非常微妙的。