SQL 方言转换
SQL 方言转换功能支持在不同数据库的 SQL 语法之间进行转换,解决数据库迁移和跨库查询的语法差异问题。
功能概述
- 支持 MySQL、PostgreSQL、SQL Server、Oracle 四种方言互转
- 两种转换模式:规则转换(快速)和 AI 转换(精准)
- SQL 格式化
- 源/目标方言快速交换
页面布局
┌─────────────────────────────────────────────────┐
│ 源方言: [MySQL ▼] 模式: [规则转换 ▼] ⇄ │
│ 目标方言: [PostgreSQL ▼] Agent: [选择 ▼] │
├───────────────────────┬─────────────────────────┤
│ 源 SQL │ 转换结果 │
│ │ │
│ SELECT │ SELECT │
│ IFNULL(name, '') │ COALESCE(name, '') │
│ FROM users │ FROM users │
│ LIMIT 10 │ LIMIT 10 │
│ │ │
│ [格式化] │ [格式化] │
└───────────────────────┴─────────────────────────┘
操作步骤
1. 选择方言
- 源方言 — 原始 SQL 的数据库类型
- 目标方言 — 要转换到的数据库类型
2. 选择转换模式
| 模式 | 说明 | 适用场景 |
|---|---|---|
| 规则转换 | 基于语法规则快速转换,无需 AI | 简单语法差异、大批量转换 |
| AI 转换 | 使用 AI Agent 智能转换,更准确 | 复杂查询、存储过程、函数 |
3. 输入 SQL
在左侧编辑器中输入或粘贴源 SQL。
4. 执行转换
系统自动将源 SQL 转换为目标方言的 SQL,结果显示在右侧。
5. 格式化
点击「格式化」按钮,对 SQL 进行美化排版。可以分别格式化源 SQL 和目标 SQL。
6. 交换方言
点击 ⇄ 按钮,快速交换源方言和目标方言。
支持的转换
常见转换示例
| 源(MySQL) | 目标(PostgreSQL) | 说明 |
|---|---|---|
IFNULL(a, b) |
COALESCE(a, b) |
空值处理 |
NOW() |
NOW() |
当前时间 |
LIMIT n |
LIMIT n |
行数限制 |
`column` |
"column" |
标识符引用 |
AUTO_INCREMENT |
SERIAL |
自增列 |
DATETIME |
TIMESTAMP |
日期时间类型 |
GROUP_CONCAT() |
STRING_AGG() |
字符串聚合 |
| 源(MySQL) | 目标(SQL Server) | 说明 |
|---|---|---|
LIMIT n |
TOP n |
行数限制 |
IFNULL(a, b) |
ISNULL(a, b) |
空值处理 |
NOW() |
GETDATE() |
当前时间 |
CONCAT(a, b) |
a + b |
字符串拼接 |
| 源(MySQL) | 目标(Oracle) | 说明 |
|---|---|---|
LIMIT n |
FETCH FIRST n ROWS |
行数限制 |
IFNULL(a, b) |
NVL(a, b) |
空值处理 |
NOW() |
SYSDATE |
当前时间 |
AUTO_INCREMENT |
SEQUENCE |
自增列 |
AI 转换模式
AI 转换模式使用大语言模型进行智能转换,适合处理复杂场景:
- 存储过程转换
- 自定义函数转换
- 复杂嵌套查询改写
- 数据库特有语法处理
使用 AI 转换需要:
- 选择「AI 转换」模式
- 选择一个 AI Agent
- 系统调用 Agent 进行转换
AI 转换需要配置 AI Provider(见 AI Provider 管理)。
使用场景
数据库迁移
将 MySQL 数据库迁移到 PostgreSQL 时,使用方言转换将所有 MySQL 特有的 SQL 语句转换为 PostgreSQL 兼容语法。
跨库查询
在不同数据库间复制查询语句时,自动转换语法差异。
学习参考
了解不同数据库的语法差异,作为学习参考。