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

しかし、copy コマンドでも指定するDISTINCTと、番号は適切にコピーされます。

問題は、なぜ がDISTINCTこのように数値形式に影響を与えるのかということです。(確かに簡単な)検索の後、この理由を見つけることができませんでした。誰か知っていますか?

4

0 に答える 0