PostgreSQL.md
... ...
@@ -829,12 +829,15 @@ AND t.user_id = '04me9sszlk54b'
829 829
AND t.instance_id = '04me86gy87lxe'
830 830
AND t.source IN ('USER', 'BUSINESS_APP');
831 831
```
832
-
833 832
### 2.8 select as 别名问题,如果别名不带标识符``或者"",PostgreSQL/gaussdb会将别名转成小写
834 833
835
-请注意,在 PostgreSQL/GaussDB 中,如果别名不带修饰符,会将别名转换成小写.
834
+请注意,在 PostgreSQL/GaussDB 中,关键词和不被引号修饰的标识符是大小写不敏感的。因此,如果字段不带修饰符双引号,会转换成小写.
835
+
836
+如果自定义SQL列别名不带修饰符,这样就会导致代码获取displayName值为NULL, get("displayName")=NULL.就会导致数据库迁移的时候,不兼容.
837
+
838
+**正确的SQL写法,列别名如果是驼峰或者包含大小写的,一定要用 ""引起来.**
836 839
837
-这样就会导致代码获取displayName值为NULL, get("displayName")=NULL
840
+参考 [4.1.1. 标识符和关键词](http://www.postgres.cn/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS)
838 841
839 842
```sql
840 843
select display_name as displayName from meta_app;
... ...
@@ -846,14 +849,27 @@ displayName |
846 849
847 850
848 851
849
---GaussDB
852
+--PostgreSQL/GaussDB
850 853
displayname |
851 854
-----------------+
852 855
基础模块
856
+
857
+
858
+正确的SQL写法,列别名如果是驼峰或者包含大小写的
859
+MYSQL: select display_name as `displayName` from meta_app;
860
+PG/GAUSSDB/ORACLE: select display_name as "displayName" from meta_app;
861
+
862
+项目自定义SQL错误的示范:
863
+SELECT param_name paramName, param_value paramValue FROM base_process_spec bps;
864
+
865
+标准的SQL语法:
866
+SELECT param_name "paramName", param_value "paramValue" FROM base_process_spec bps
853 867
```
854 868
855 869
856 870
871
+
872
+
857 873
# 第三节. PostgreSQL 基础教程
858 874
859 875
**来源:** [PostgreSQL 教程](https://www.rockdata.net/zh-cn/tutorial/toc/)