我使用ASP.Net创建了一个网站,使用SQL Server创建了一张表,然后将其发布到提供商。现在我想将MSSQL.sql文件转换成Mysql.sql文件。有没有免费的软件或代码可以将SQL Server转换为MySQL?如果有人能帮忙,那就太感激了。
DATEADD(year, 1, $date$) -> $date$ + interval 1 year
DATEADD(month, 1, $date$) -> $date$ + interval 1 month
DATEADD(day, 1, $date$) -> $date$ + interval 1 day
where $date$ is an expression of DATE type.
微软SQL和MySQL具有不同的日期处理函数集,尽管它们中的大多数可以通过以下方式复制:
DATENAME(month, $date$) -> DATE_FORMAT($date$, '%M') or MONTHNAME(expression)
DATENAME(weekday, $date$) -> DATE_FORMAT($date$, '%W') or DAYNAME(expression)
DATEPART(year, $date$) -> DATE_FORMAT($date$, '%Y')
DATEPART(month, $date$) -> DATE_FORMAT($date$, '%m')
DATEPART(day, $date$) -> DATE_FORMAT($date$, '0')
GETDATE() -> NOW()
GETUTCDATE() -> UTC_TIMESTAMP()
其中 $date$ 是 DATE 类型的表达式。
MS SQL 的运算符 '+' 允许连接字符串,例如:'string1' + 'string2'。在 MySQL 中,这种表达式必须被 CONCAT('string1', 'string2') 替换掉。 MS SQL 的函数 CONTAINS(expression, template) 搜索模板在表达式中的匹配项。MySQL 有一个名为 LIKE 的运算符实现了相同的语义:expression LIKE %template% 如果 MS SQL 查询包含 'TOP (100) PERCENT' 模式,则在组合 MySQL 查询时将其删除即可。如果该模式中有其他百分比数量,则可以使用以下代码在 MySQL 中替换它(适用于 MySQL 5.0.7 及更高版本):
SET @amount =(SELECT COUNT(*) FROM %table name%) * %percentage% / 10;
PREPARE STMT FROM '%original query% FROM %table name% LIMIT ?';
EXECUTE STMT USING @amount;
在MS SQL和MySQL中,JOIN语句的语法非常相似。唯一的区别是MySQL中使用ON关键字替换了MS SQL中的WHERE关键字。例如:
... table1 CROSS JOIN table2 WHERE condition
必须被翻译成
... table1 CROSS JOIN table2 ON condition
使用PHPmyadmin选项来完成这项工作是不错的选择。但有时在转换过程中会出现错误。我们实际上研究了MSSQL的数据库结构,并根据它编写了自己的mysql语句,进行了单元测试并学到了一些东西。因此,除了转换之外,如果您也想亲自动手操作,这是一个很好的方法。