---
title: DevKit SQL改造案例分享-官方技术文章-鲲鹏社区
description: 体验DevKit工具SQL改造能力
keywords: DevKit,SQL,改造案例分享,官方技术文章,鲲鹏社区,背景,改造能力,创建
url: https://www.hikunpeng.com/developer/techArticles/20251205-2?envFlag=1
section: (其他)
---

# DevKit SQL改造案例分享-官方技术文章-鲲鹏社区

URL: https://www.hikunpeng.com/developer/techArticles/20251205-2?envFlag=1
描述: 体验DevKit工具SQL改造能力
关键词: DevKit,SQL,改造案例分享,官方技术文章,鲲鹏社区,背景,改造能力,创建

官方技术文章 [了解详情](https://www.hikunpeng.com/zh/developer/techArticles)

DevKit SQL改造案例分享

DevKit SQL改造案例分享

DevKit软件迁移

发表于 2025/12/05

0

## 背景

在进行数据库的迁移改造时，涉及到应用源码中SQL语句的改造适配。由于不同数据库的SQL方言存在差异，当数据库类型切换时，应用源码中的SQL语句必须要进行相应适配改造才能确保数据库类型切换后应用运行结果一致。

以DB2数据库迁移到GoldenDB数据库为例，在DB2中，升序排序（ASC）时默认将NULL排在最后，GoldenDB默认排在前面。DB2和GoldenDB在升序排序时对NULL值的不同处理方式，导致数据查询时排序结果的不一致性。

假设存在名为employees的表，其中包含以下数据：

| employee_id | name | salary |
| --- | --- | ---|
| 1 | Alice | 50000 |
| 2 | Bob | NULL |
| 3 | Charlie | 60000 |
| 4 | David | 45000 |

在 DB2 中，默认情况下，升序排序（ASC）时 NULL 值会被排在最后。例如：

```sql
SELECT * FROM employees ORDER BY salary ASC;
```

排序结果可能如下：

| employee_id | name | salary |
| --- | --- | ---|
| 4 | David | 45000 |
| 1 | Alice | 50000 |
| 3 | Charlie | 60000 |
| 2 | Bob | NULL |

在 GoldenDB 中，默认情况下，升序排序（ASC）时 NULL 值会被排在最前面。对于前面相同的查询语句，GoldenDB输出可能如下：

| employee_id | name | salary |
| --- | --- | ---|
| 2 | Bob | NULL |
| 4 | David | 45000 |
| 1 | Alice | 50000 |
| 3 | Charlie | 60000 |

因此，为了在 GoldenDB 中与 DB2 的排序行为保持一致，可以在 ORDER BY 子句中显式添加 NULLS LAST，以确保 NULL 值在升序排序时被排在最后。例如：

```sql
SELECT * FROM employees ORDER BY salary ASC NULLS LAST;
```

这样，GoldenDB的排序结果将与DB2一致。

## DevKit SQL改造能力

### 创建SQL迁移任务

上传待改造源码包，源码类型选择“Java”，源码迁移任务选择“SQL迁移”，在高级配置中，选择迁移源数据库为“DB2”，迁移目标数据库为“GoldenDB”，迁移“开始迁移”按钮进行迁移。

### 查看扫描结果

迁移扫描完成后，会生成SQL迁移报告，报告中显示扫描出SQL语句的文件名称、源路径、源码包名、SQL总数、不兼容SQL数等信息，在“指导建议”列点击查看详情，可以查看到对应文件中扫描出来的SQL语句信息。鼠标到黄色波浪线上，即可查看工具提取拼接后的SQL语句。单击“复制SQL提取语句”可以将提取出的SQL语句快速复制下来。

### 下载SQL迁移报告汇总文件

SQL迁移汇总报告压缩包中，有Excel文件记录SQL扫描结果，如果生成patch，还会有patch文件，只需对被扫描项目源码应用patch文件，就能快速完成SQL修改。

### 应用patch文件

IDEA打开源码项目，将patch文件拖入IDEA，即可应用patch中的修改。

本页内容
