SQL 方言转换

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 转换需要:

  1. 选择「AI 转换」模式
  2. 选择一个 AI Agent
  3. 系统调用 Agent 进行转换

AI 转换需要配置 AI Provider(见 AI Provider 管理)。

使用场景

数据库迁移

将 MySQL 数据库迁移到 PostgreSQL 时,使用方言转换将所有 MySQL 特有的 SQL 语句转换为 PostgreSQL 兼容语法。

跨库查询

在不同数据库间复制查询语句时,自动转换语法差异。

学习参考

了解不同数据库的语法差异,作为学习参考。