adcaaa49a6c4e27b5afbe41d8b366d965963cae2
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/) |