Navicate 里查询的表名必须带双引号问题,已解决

哈喽!我是泡泡!又在写代码的路上发现了新知识!

问题描述

以前不经常用navicate,我用navicate写sql的时候发现有的表必须要带上一对双引号才能执行,否则执行就会一直报错,但是有的表就不用;

就很纳闷,一度以为是我的navicate版本问题,或者是因为我的表是外部表导入导致的问题,后来才搞清楚,如果你也有这样的困惑跟我一起看下去吧!

原因分析:

导致这种情况的原因就是数据库默认表名及字段大小写的原因
比如

数据库特性
PostgreSQL包括greenplum是是大小写不敏感的,默认大写字母会自动转为全小写
Oracle是大小写不敏感的,默认小写字母会自动转为全大写
MySQLMySQL 在 Windows 下不区分大小写,但在 Linux 下默认是区分大小写,可以设置
SQL server是大小写不敏感的,可以改变设置

解决方案:

针对这个问题有如下解决方案(以postgresql为例):

1.比如postgresql数据库,默认小写,如果表名里面含有大写字母,就必须给表名加上双引号才能查出来,否则报错没有这个表,因为系统会自动把表名转化为全小写,就找不到表了;

如这样里面任意地方含有大写字母查询就会报错

select * from Test ;
select * from teSt;

需要加上双引号就不会报错如:

select * from "Test ";
select * from  "teSt";

2.改表名,把表名改成默认的大小写,比如postgresql数据库,把表名改成全小写,那查询的时候就不需要用双引号了,如:

select * from test ;

我是泡泡,欢迎点赞,关注!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值