如何将 MS SQL 查询转换为 MySQL 查询

Posted

技术标签:

【中文标题】如何将 MS SQL 查询转换为 MySQL 查询【英文标题】:How to convert MS SQL queries to MySQL queries 【发布时间】:2012-11-15 01:17:37 【问题描述】:

我有一个 MSSQL 查询文件 (.sql),现在我需要将其转换为 mysql 查询。 请帮我。脚本如下:

CREATE TABLE [dbo].[Artist](
    [ArtistId] [int] IDENTITY(1,1) NOT NULL,
    [Name] [nvarchar](120) NULL,
PRIMARY KEY CLUSTERED 

(
    [ArtistId] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

) ON [PRIMARY]

【问题讨论】:

这看起来像 DDL,而不是查询? 【参考方案1】:

如果您想手动转换 DDL,那么您可以根据具体情况建立规则,例如如下:

[] 需要换成反引号 IDENTITY(1,1) 可以替换为AUTO_INCREMENT 大多数 ANSI 选项和设备设置 可以忽略(这些似乎只是因为表有 已改写) w.r.t. dbo,MySQL 实现模式的方式与 SQL Server 不同 - 您要么需要将模式分离到数据库中,要么删除模式,或者将模式名称混入表名(例如作为前缀)

这将为您留下如下内容:

CREATE TABLE `Artist`(
    `ArtistId` int NOT NULL AUTO_INCREMENT,
    `Name` nvarchar(120) NULL,
    PRIMARY KEY CLUSTERED 
    (
       `ArtistId` ASC
    )
);

Fiddle here

但是,使用 migration tool 进行此迁移通常要容易得多 - 搜索有关如何使用 Transition from SQL Server to MySQL 的部分

【讨论】:

以上是关于如何将 MS SQL 查询转换为 MySQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

如何将 MS-SQL Server SELECT 查询转换/迁移到 Oracle 和 MySQL?

如何将选择 sql 查询的结果转换为 ms 访问中的新表

如何将 MS Access“IIF”查询转换为 Sql Server 查询?

如何将访问查询转换为MS SQL

如何将 MySQL 查询转换为等效的 Oracle sql 查询

MS Access 查询转换为 Sql Server