postgreSQL相关知识点纪要

PostgreSQL:世界上最先进的开源关系数据库

一 postgreSQL与Oracle 语法对比差异

orcale切换pg相关问题和建议
1 类型转换错误,vo字段类型没有对应的数据库字段类型。如:数据库是number,入参传varchar,oracle语法可以支持,pg需要强制转换,cast(#{item.id, jdbcType= VARCHAR} AS NUMBER)
2 pg中 trunc函数(截断日期或者数字)不能作用于时间,要使用date_trunc
3 pg语法支持declare,但是需要在前面加上DO$$,参数中的value也要从#{xxx}改为${xxx},会带来SQL注入风险。建议不要在pg中声明变量,改为入参传递。
4 to_char字符串转换,在pg中要改为cast转换。
5 分页标识,pg中要使用limit offset,不能使用rownum。如: limit #{1. pagesize} offset #{1. startindex}-1
6 oracle中的 start with connect by 语法,pg改为with recursive语法
7 pg不支持decode语法,使用case when来代替
8 pg中删除,insert,updata不能给表加别名
9 Oracle中查一条数据 rownum=1,pg中 limit 1
10 Oracle中获取时间sysdate,pg中用now(),或者CURRENT_TIMESTAMP, CLOCK_TIMESTAMP,建议now()性能好
11 nvl函数pg中不支持,使用coalesce
12 pg中多表联查,如果关联字段的类型不一致,回导致sql优化,索引等失效,需要cast或者:: 转换类型
13 pg中的numberic类型,会默认自动增加小数点后6位,当使用这个返回值给string类型赋值时,interger. valueof("32.000000")导致类型转换异常。

posted @ 2021-07-14 22:58  月光狮  阅读(364)  评论(0编辑  收藏  举报