我有一个表,我必须设置列类型为VARCHAR
带9 BYTE
,但在此列在施加最大功能时,它只显示最大值为9999,不超过的是,
create table test( ID NUMBER, NAME VARCHAR2(100 BYTE), SAL NUMBER, RANK VARCHAR2(9 BYTE)); Insert into test (ID,NAME,SAL,RANK ) values (1082,'ABC',2082,'9999'); Insert into test (ID,NAME,SAL,RANK ) values (1083,'ABC',2083,'10000');
实际数据:
id NAME SAL RANK 1082 ABC 2082 9999 1083 ABC 2083 10000
询问
select * from test where RANK =(select max(RANK ) from testyy);
输出:
id NAME SAL RANK 1082 ABC 2082 9999
我试图使列为空并将列修改为INTEGER,然后它可以工作,但是我有疑问为什么它不适用于9 BYTE数据类型
update test set RANK =null where id=1082; update test set RANK =null where id=1083; alter table test modify RANK INTEGER; update test set RANK ='9999' where id=1082; update test set RANK ='10000' where id=1083; select * from test where RANK =(select max(RANK) from test); id NAME SAL RANK ------------------------------------------ 1083 ABC 2083 10000
没有来自Oracle SQL开发人员的错误消息
因为rank
在您的表中是varchar,并且在这种情况下9999
大于10000
,所以9999
max是。