Postgre SQL   发布时间:2022-05-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PostgreSQL数据库表名大小写问题大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

今天,用Delphi 连接PostgreSql数据库时,出现了问题。问题提示:error:表不存在。POSTGRsql数据库的表名都用大写,比如Users、Profiles、Money等。

多尝试了一些表,发现当表名都是小写时,可以连接。
后来发现,在做SELEct * from Users这样的查询的时候也会提示ERROR: relation “users” does not exist。

分析了一下,由于 POSTGResql 是大小写敏感的,并默认对sql语句中的数据库对象名称转换为小写,因此如果你在创建数据库对象时指定了大小写混和的对象名称,那么在通过sql语句访问 这些对象时,由于PostgreSql数据库里表名应该是分大小写的,导致找不到users这个表。

要解决这个问题,必须使用双引号(”)将数据库对象括起来,以提示 POSTGResql 不用帮你转换对象名为小写,否则将激发“xxxxx对象不存在”的异常,譬如您的数据库中有名为 TUser 的表,您在 POSTGResql 自带的图形化查询工具中必须使用类似这样的查询语句才能正确执行:SELECT * FROM “TUser”,当然它对 sql 标准中的保留字和关键字是不区分大小写的,所以写成 SELEct * From “TUser” 这样也是完全可以的。

另外,POSTGResql 对数据也是大小写敏感的,这点与 sqlServer 不同(sqlServer 默认是不敏感的),譬如在 TUser 表中有字段 name,其中有一行 name 字段值为“Tony Tang”的记录,如果直接使用

SELECT * FROM “TUser” WHERE “name” liKE ‘%tony%’;
是查询不到这条记录的,不过你可以这么写:

SELECT * FROM “TUser” WHERE UPPER(“name”) liKE ‘%TONY%’;

呵呵,是不是觉得这样不太好看,而且担心性能会受影响?幸好 POSTGResql 提供了关键字 @R_491_8616@ 来帮我们解决这个问题,这真是个非常有趣的关键字(I like),对于第一种写法只需要将 liKE 替换成 @R_491_8616@ 就可以了。

最简单的办法,就是数据库里所有的表名都是小写的,最好字段名也都是小写的(因为映射到对象属性以后基本上会变换大小写,JPA是都变成小写)。这样就没与那么多烦恼以及兼容性问题了。

小结:
1、POSTGResql对表名、字段名都是区分大小写的。用sql语句的时候需要加双引号。
2、POSTGResql在sql语句中对数据(字段)大小写是敏感的.

SELEct login_ID as 编号,name as 用户名 from t_login(这种会报错,找不到login_ID字段). 如果要查询大写字母的字段,同样要加上双引号:SELEct “login_ID” as 编号,name as 用户名 from t_login.

大佬总结

以上是大佬教程为你收集整理的PostgreSQL数据库表名大小写问题全部内容,希望文章能够帮你解决PostgreSQL数据库表名大小写问题所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:今天