加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ORACLE 空串'' 问题

发布时间:2020-12-12 14:08:37 所属栏目:百科 来源:网络整理
导读:对一个defaultValue=”且not null的新增字段增加索引,会引发COUNT计算结果为0的问题 – 创建测试表 CREATE TABLE tmp_tab_a(ID NUMBER PRIMARY KEY ,NAME VARCHAR2( 20 )); – 插入测试数据 begin for i in 1. .100 loop INSERT into tmp_tab_a (id,NAME) v

对一个defaultValue=”且not null的新增字段增加索引,会引发COUNT计算结果为0的问题

– 创建测试表

CREATE TABLE tmp_tab_a(ID NUMBER PRIMARY KEY,NAME VARCHAR2(20));

– 插入测试数据

begin for i in 1..100 loop INSERT into tmp_tab_a (id,NAME)values(i,'str'||i);
  end loop;
  commit;
end;

– count(*)结果为100
– 执行计划显示走的主键索引进行count(*)计算

select count(*) from tmp_tab_a;

– 新增一个字段 sseqno not null,default = ”

alter table TMP_TAB_A add sseqno varchar2(20) default '' not null;

– 对字段sseqno新增一个索引

create index IND1_TMP_TAB_A ON TMP_TAB_A (sseqno);

– 异常情况出现count(*)结果都是 0
– 执行计划显示走的索引为IND1_TMP_TAB_A

select count(*) from TMP_TAB_A;
select count(id) from TMP_TAB_A;

– 将sseqno 的 not null属性去除,允许为null

alter table TMP_TAB_A modify sseqno null;

– 查询count结果为100,结果正确!
– 执行计划显示走的主键索引进行count(*)计算

select count(*) from TMP_TAB_A;
select count(id) from TMP_TAB_A;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读