关于PostgreSQL的大小写问题和验证

在PostgreSQL或Abase类型的数据库中,大小写有一定的坑!

在定义表时,字段名称大小,是否加引号  将产生不一样的结果。

结论(写在前面):
1,PostgreSQL对表名、字段名都是区分大小写的。但是,PostgreSQL在SQL语句中对大小写是不敏感的,在不加双引号的情况下,创建时无论使用大写还是小写,表中都会统一转为小写显示的,因此查询时也会将语句中的字段名统一改成小写,因此,此时使用大小写查询均可。

2,用SQL语句的时候需要加双引号,或者转义符号。如果要创建名称为大写字母的字段名,需加双引号,此时表中的字段名不含双引号,但是查询时需加上双引号,执行时语句中的双引号将被抹去,因此能查出对应字段。

3,查询执行时,只会发生字段"双引号被抹去"和“大写转小写”中其中一个,优先发生"双引号被抹去"。

测试探究
通过下面的小测试即可看出区别

我们使用navicat(非MySQL专用版)测试:

问题1:字段名使用大写加双引号
结果如下:


执行insert操作,插入数据成功。

再执行查询操作:

结论1:创建表时字段名使用大写加双引号,在表中字段名不会出现双引号,但是,此时PostgreSQL使用select查询时,也必须使用大写加双引号(即与数据字段名保持一致)。原因在于,如果不加双引号,PostgreSQL的语句中,字段名会被统一改成小写,大小写不一致将报“c_bh”不存在。

问题2:创建表时字段名使用大写,不加双引号

结论2:创建表时字段名使用大写,但是不加双引号,此时PostgreSQL的表中的字段名会转化为小写,select查询时使用大写即可。如果还加双引号,将报“C_BH”不存在。

问题3:创建表时字段名使用小写加双引号

结论3:创建表时字段名使用小写加双引号,此时PostgreSQL的表中的字段名会去掉双引号,保持为小写,select查询时使用小写即可,加双引号也可以!

第四种情况:创建表时字段名使用小写不双引号


结论4:创建表时字段名使用小写也不加双引号,此时PostgreSQL的表中的字段名会去掉双引号,转为小写,select查询时使用小写即可,加双引号也可以!使用大写不加双引号也可以,但是如果使用大写加双引号则会报错。
————————————————
版权声明:本文为CSDN博主「陈软件」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenruijia170707/article/details/81195948

相关推荐