Oracle查询2007年有租赁记录人员时遇ORA-00936错误求助
解决Oracle SQL报错ORA-00936的问题
嘿,我来帮你搞定这个报错!你的SQL语句有两个关键问题,导致Oracle抛出了"missing expression"的错误:
1. 表名拼写错误
你实际的租赁记录表是Rents,但SQL里写成了rent——虽然Oracle默认不区分表名大小写,但为了避免不必要的问题,还是用和数据库中一致的表名比较稳妥。
2. 日期处理语法不符合Oracle规范
你用的date(DATE, 'yyyy')是其他数据库(比如SQLite)的写法,Oracle根本不支持这种语法!这才是报错的核心原因。在Oracle中,要提取日期字段的年份,有两种常用的正确方式:
方式一:用EXTRACT函数提取年份数值
这个方法直接从日期中提取年份的数值,比较起来更高效:
SELECT * FROM Person NATURAL JOIN Rents WHERE EXTRACT(YEAR FROM "DATE") = 2007;
方式二:用TO_CHAR函数转成年份字符串比较
如果需要处理字符串形式的年份,可以用这个方法:
SELECT * FROM Person NATURAL JOIN Rents WHERE TO_CHAR("DATE", 'YYYY') = '2007';
另外补充一点:DATE是Oracle的保留关键字,直接作为字段名使用时,最好用双引号"DATE"括起来,避免语法冲突。
内容的提问来源于stack exchange,提问作者M. Adam
相关产品推荐
相关产品推荐

