-4

我正在将我们的项目数据库从 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 以及更改查询的最简单方法。

谢谢,

普拉塔梅什

4

1 回答 1

2

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

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

铸造而不是INT使用SIGNED或 UNSIGNED)时

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

而不是VARCHAR使用CHAR

CAST(OccurredOn AS CHAR(100))

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

于 2013-04-05T14:54:08.157 回答