1、大写字段加上双引号,写了脚本可以参考:mysql转pg脚本
2、IFNULL转换为COALESCE。
3、LIMIT分页两个参数一个page,limit转换为如下写法:
// 计算 offset,这里假设 page 从 1 开始
int offset = (page - 1) * limit;
sql:limit #{limit} OFFSET #{offset}
4、如果是利用mybatisplus的提供的构造器,大写字段的话要加上双引号。代码如下:
QueryWrapper<RepBasicInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("\"ACCOUNT_ITEM_ID\"", accountId)
.select("\"ID\"", "COALESCE(\"REVIEW\", '') AS \"REVIEW\"");
5、如果你的数据库字段是数字类型,代码中是string类型,需要进行转换。代码如下:
<if test="payment != '' and payment != null">
AND "PAYMENT" = CAST(#{payment} AS numeric) <!-- 假设 PAYMENT 应该是 numeric 类型 -->
</if>
6、MySQL中的YEAR()和MONTH()函数替换为了PostgreSQL的EXTRACT(YEAR FROM CURRENT_DATE)和EXTRACT(MONTH FROM CURRENT_DATE)。
YEAR() --》EXTRACT(YEAR FROM CURRENT_DATE)
MONTH() --》EXTRACT(MONTH FROM CURRENT_DATE)
7、DATE_FORMAT的替换,代码如下:
DATE_FORMAT(fu."CREATE_DT",'%m')
转换为
to_char(fu."CREATE_DT", 'MM')
%Y => YYYY
%m => MM
%d => DD
%H => HH24
%i => MI
%s => SS
8、查询结果原本是数字类型,但我想要字符串怎么办,代码如下:
COALESCE(al."LAST_END_DEBIT" - al."LAST_END_CREDIT", '0')
转换为
COALESCE(NULLIF(al."INITIAL DEBIT", 0)::text,'')
待补充…