问题
最近在写一个项目,用到的是oracle数据库,但是在执行oracle语句的时候总是提示找不到字段,只有将字段名称用双引号引起来才可以解决问题,最后发现是由于数据库字段名称是小写造成的,但是一个一个的手动替换太过于麻烦,要是将所有的表都替换风险又太大,因为自己涉及到的只有新增的七八张表,所以用了一个指定表名称来替换的方法。
解决
图中有三个地方需要修改成我们自己的表名称,注意有两个是用单引号括起来的,有一个是没用单引号括起来的。完整sql如下
begin for c in (select COLUMN_NAME cn from all_tab_columns where table_name='表名') loop begin execute immediate 'alter table 表名 rename column "'||c.cn||'" to '||c.cn; exception when others then dbms_output.put_line('表名'||'.'||c.cn||'已经存在'); end; end loop; end;
总结
这样我们可以根据表名称来指定修改表的字段。上面的代码我们可以直接在navicat、pl/sql等工具中直接运行,如图