【问题标题】:ORA-00936: missing expression for a '='ORA-00936: 缺少 '=' 的表达式
【发布时间】:2021-04-30 08:32:46
【问题描述】:

我被要求为我的 D.A.D 课程做的一个特定问题如下:

• 编写执行以下操作的 SQL 语句: • 显示StuId、电影编号、标题、运行时间、评级代码、评级简短描述、tmdb 分数 符合以下任何条件的电影: 评级代码 M 加上 160-165(含)之间的运行时间 评级代码 G 加上运行时间小于 90 PG 的评级代码加上运行时间 120 或 121 MA 的评级代码加上运行时间 185 分钟或更多 • 查询还必须只包括 tmdb_score 大于 6.1 的电影。 • 列表必须是升序电影无序列。

作为回应,我写了这个:

SELECT '103040698' as StudID, M.MovieNo, M.Title, M.RunTime, M.RatingCode, M.TMDB_Score, R.SHORTDESC, C.COLOURNAME
FROM Movie0698 M
INNER JOIN RATING0698 R
ON M.RatingCode = R.RatingCode
INNER JOIN COLOURTYPE0698 C
ON M.COLOURCODE = C.COLOURCODE
WHERE (M.RatingCode = 'M' AND M.RunTime BETWEEN 160 AND 165 AND M.TMDB_Score > 6.1) 
OR (M.RatingCode = 'G' AND M.RunTime = < 90 AND M.TMDB_Score > 6.1) 
OR (M.RatingCode = 'PG' AND M.RunTime BETWEEN 120 AND 121 AND M.TMDB_Score > 6.1)
OR M.RatingCode = 'MA' AND M.RunTime BETWEEN >=185 AND M.TMDB_Score > 6.1)
ORDER BY M.MovieNo ASC;

但是,错误信息

'OR (M.RatingCode = 'G' AND M.RunTime = < 90 AND M.TMDB_Score > 6.1) 
                 
Error at line 8:
ORA-00936: missing expression' 

不断出现。在线程序(SQLjunior)指出'='是第8行中的问题。我不确定我哪里出错了,因为我一直在通过建议的其他问题使用相同的格式由我的导师指导,这些查询运行良好。

【问题讨论】:

  • M.RunTime = &lt; 90 应该是M.RunTime &lt;= 90OR M.RatingCode = 'MA' 应该是 OR (M.RatingCode = 'MA'
  • @DmitryBychenko 虽然很好地格式化 SQL 通常很有帮助;在这种情况下,OP 在错误消息中包含了与代码中的一行相对应的行号,并且通过更改格式,您会使行号和实际代码之间的链接无效。我已回滚您的编辑以保持行号有效。

标签: sql oracle syntax-error ora-00936


【解决方案1】:

“小于或等于”运算符是&lt;=,而不是&gt;=。即,在M.RunTime 的条件下,您应该使用M.RunTime &lt;= 90 而不是M.RunTime =&lt; 90

【讨论】:

  • 抱歉,我应该校对我的查询,现在我的错误出现在“第 10 行:ORA-00933:SQL 命令未正确结束”,但我马上就收到了订单跨度>
  • @VasTheo 似乎在where 子句中的最后一个OR 之后缺少(
【解决方案2】:

你有三个错别字:

OR (M.RatingCode = 'G' AND M.RunTime = < 90 AND M.TMDB_Score > 6.1)

= &lt; 应该是 &lt;=

进入:

OR M.RatingCode = 'MA' AND M.RunTime BETWEEN >=185 AND M.TMDB_Score > 6.1)

您需要删除BETWEEN

和:

OR M.RatingCode = 'MA' AND M.RunTime BETWEEN >=185 AND M.TMDB_Score > 6.1)

OR 之后缺少开头的(

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 2017-08-31
    • 1970-01-01
    相关资源
    最近更新 更多