0

我试图弄清楚为什么在从特定视图中选择时(创建另一个视图或复制视图以创建表时)丢失了列号格式,并且惊讶地发现 DISTINCT 是罪魁祸首。使用最简单的视图来说明问题:

CREATE VIEW Test AS
SELECT DISTINCT CAST(1.5 AS  NUMBER(6,3)) AS TestCol from dual;

desc test;
TESTCOL NUMBER(6,3)

create view test2 as
select * from test;

desc test2;
TESTCOL NUMBER

但是,如果我在创建辅助视图时也使用 DISTINCT,则会保留数字格式:

create view test3 as
select DISTINCT * from test;

desc test3;
TESTCOL NUMBER(6,3)

对我来说更大的问题是使用复制命令从此视图生成表时:

copy from bob/bob@localhost/ora create test4 using select * from test;

desc test4;
TESTCOL NUMBER(38)

我的数字精度丢失了:

select * from test4;

TESTCOL
2  -- should be 1.5

但是,如果我还在DISTINCT复制命令中指定,数字将被正确复制。

问题是为什么DISTINCT会以这种方式影响数字格式?经过(诚然快速)搜索后,我找不到原因,有人知道吗?

4

0 回答 0