【问题标题】:Conversion of query from SQL Server to MySQL [closed]从 SQL Server 到 MySQL 的查询转换 [关闭]
【发布时间】:2013-04-05 14:51:08
【问题描述】:

我正在将我们的项目数据库从 SQL Server 转换为 MySQL,数据库转换已经完成。 但是在执行一些查询时,我遇到了一些错误。

我正在使用 ColdFusion 8、MySQL 5。

这是一个例子:

SELECT i.ID, s.Name, i.OccurredOn, i.MinorProblemID, 
  i.MajorProblemID, i.Problem, i.Motivation, i.Strategy1, 
  i.Strategy2, i.Strategy3, i.Decision, 
  COALESCE(CAST(s.Grade as int),-5) as Grade, i.LocationID, 
  l.Display as StartMonth, l.OrderBy as StartMonthOrder, 
  i.StudentID, u.ID as SourceID, 
  replace(u.FirstName+' '+u.LastName,'''','`') as Source,
  replace(replace(replace(replace(replace(replace(replace( 
      ltrim(replace(CAST(OccurredOn as varchar(100)),CAST(OccurredOn 
      as varchar(12)),'')),':1',':0'),':2',':0'),':3',':0'),':4',':0'),
      ':5',':0'),':05',':00'),':00',':00 ') as StartHour 
FROM ViewIncidents i 
JOIN Students s ON i.StudentID = s.ID 
LEFT OUTER JOIN Users u ON i.UserID = u.ID 
LEFT OUTER JOIN Lookup l ON l.LookupCode = 'SchoolMonths' 
  AND l.Value = CAST(OccurredOn as varchar(3)) 
WHERE i.OccurredOn > '7/1/2012' 
AND i.OccurredOn >= '7/1/2012' 
ORDER BY i.OccurredOn DESC

在 SQL Server 中运行良好,但在 MySQL 中失败:

执行数据库查询时出错。
您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行使用 'int),-5) 作为 Grade,i.LocationID,l.Display 作为 StartMonth,l.OrderBy as Star' 附近的正确语法

请帮助我将 db 从 mssql 迁移到 mysql 以及更改查询的最简单方法。

谢谢,

普拉塔梅什

【问题讨论】:

  • 您是否真的在没有回车的情况下编写了所有查询?它使 FWIW 变得难以理解。

标签: mysql sql-server


【解决方案1】:

mysql 中的连接是使用CONCAT()完成的

replace(CONCAT(u.FirstName, ' ', u.LastName), '''', '`') AS Source

当投射而不是INT 使用SIGNED(或未签名)

COALESCE(CAST(s.Grade AS SIGNED), - 5) AS Grade,

用CHAR代替VARCHAR

CAST(OccurredOn AS CHAR(100))

除了强制转换和连接之外,所有其他都很好。

【讨论】:

  • 谢谢@JW...你能告诉我处理此类查询的最简单方法吗?我的意思是,简要介绍一下 mssql 和 mysql 的语法变化?
  • 两台服务器在存储功能方面存在差异。你将不得不手动检查语法。
  • @JW Champions SQl冠军
  • @Mudassirhasan 你错了:) 那里有很多正在睡觉的sql 精灵:)
  • 好吧,我做了 u @ j W 建议的更改,查询工作没有任何错误,但结果我得到一个空集。 :(
猜你喜欢
  • 2015-08-27
  • 2018-10-17
  • 1970-01-01
  • 2011-06-10
  • 1970-01-01
  • 2014-01-10
  • 2014-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多