从MySQL切换PostgreSQL后,改动的地方,注意事项!!!

1、大写字段加上双引号,写了脚本可以参考:mysql转pg脚本

2、IFNULL转换为COALESCE。

3、LIMIT分页两个参数一个page,limit转换为如下写法:

xml 复制代码
  // 计算 offset,这里假设 page 从 1 开始
    int offset = (page - 1) * limit;
    sql:limit #{limit} OFFSET #{offset}

4、如果是利用mybatisplus的提供的构造器,大写字段的话要加上双引号。代码如下:

java 复制代码
QueryWrapper<RepBasicInfo> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("\"ACCOUNT_ITEM_ID\"", accountId)
.select("\"ID\"",  "COALESCE(\"REVIEW\", '') AS \"REVIEW\"");

5、如果你的数据库字段是数字类型,代码中是string类型,需要进行转换。代码如下:

xml 复制代码
<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)。

xml 复制代码
YEAR()  --》EXTRACT(YEAR FROM CURRENT_DATE)
MONTH()  --》EXTRACT(MONTH FROM CURRENT_DATE)

7、DATE_FORMAT的替换,代码如下:

xml 复制代码
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、查询结果原本是数字类型,但我想要字符串怎么办,代码如下:

xml 复制代码
COALESCE(al."LAST_END_DEBIT" - al."LAST_END_CREDIT", '0')
转换为
COALESCE(NULLIF(al."INITIAL DEBIT", 0)::text,'')

待补充...

相关推荐
IvorySQL8 分钟前
PostgreSQL 日报 | JOIN 与外键优化(8 月 9 日)
数据库·postgresql
ltl26 分钟前
自治数据库十年回顾:Peloton、NoisePage、OtterTune 到云原生 auto-tuning
数据库
灯澜忆梦2 小时前
【MySQL10】进阶篇 | 索引_#2性能优化
数据库·sql·mysql·性能优化
C++ 老炮儿的技术栈4 小时前
从 Qt Designer 属性编辑器的层级可以看到继承链
c语言·数据库·c++·qt·sqlite·visual studio
MC皮蛋侠客4 小时前
Redis 系列(一):全景与最小闭环——从 `SET` 命令到内存数据结构
数据结构·数据库·redis
zt1985q5 小时前
本地部署开源网络书签与内容管理工具 Karakeep 并实现外部访问
运维·服务器·网络·数据库·网络协议·开源
IvorySQL6 小时前
PostgreSQL 日报| PostgreSQL 19 默认 WAL 压缩算法(8 月 8 日)
数据库·postgresql·区块链
油丶酸萝卜别吃7 小时前
MySQL B+ 树查询全过程详解
数据库·mysql
leisoo80977 小时前
股票数据本地化存储实战:JSON、数据库与列式存储的方案对比
jvm·数据库·json
Exclusive_Cat7 小时前
MySQL回表机制解析与优化策略
数据库·sql