我正在使用JDBC访问数据库,我基本上是通过调用String来查询。
这是我的表book_table
:
| title | book no. | author_first | author_last |
The cat, 0, Tim, Joe
The dog, 1, John, Soe
The mouse, 2, Josh, Moe
这是我要查询的SQL语句:
"select title from book_table where author_first like '%tim%' and author_last like '%joe%'";
我一直在Java中获取错误异常:ORA-00904: "author_last": invalid identifier"
有什么迹象表明我做错了什么?
答案 0 :(得分:2)
在为book_table创建DDL时,您很可能使用过双引号。
从错误中它意味着没有 author_first
这样的列数据库中使用的名称应该正常工作,如果你没有使用双引号,那么可以很好地忽略大写和小写。
create table book_table(title varchar2(100));
create table BOOK_TABLE(TITLE varchar2(100));
在两种情况下
select * from book_table where title like '%mytitle%';
应该工作正常。
但是,如果您使用双引号,则必须在执行sql操作时使用确切的情况。
create table "BOOK_TABLE"("Title" varchar2(100));
在这种情况下
select * from book_table where title like '%mytitle%'
不起作用
你必须使用
select * from book_table where "Title" like '%mytitle%';
我建议删除表格并在没有双引号的情况下重新创建它们,看看是否能解决它。