Postgresql:null附近的语法错误

问题描述 投票:0回答:2

我有一个连接到postgresql的Web应用程序。我正在尝试使用准备好的语句从数据库中获取数据,并不断在null或接近null的位置获取语法错误。

以下是我的查询代码段:

PreparedStatement pstmt = conn.prepareStatement("SELECT * "+ "FROM rooms1 o " + "JOIN rooms2 op" +
                                                 " ON o.room_id = op.room_id " +"JOIN rooms3 p " +
                                                 " ON op.person_id = p.person_id " +
                                                 "WHERE o.room_id = ? " +
                                                 " ORDER BY o.plate_order ASC;")) {
  //Rest of code

此查询在检查测试数据库时工作正常,但是在准备好的语句中使用它时,错误为

Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near "null"
position: 54

[从一些研究中,我认为问题出在我的查询上,这也是我第一次编写Postgresql查询。请看一下。

java postgresql jdbc prepared-statement
2个回答
0
投票

o.room_id =吗?如果呢?为空,因此您必须检查“ o.room_id为空”。您可以通过内联检查此内容,如果


0
投票

我用***指示了错误位置54:

SELECT * FROM rooms1 o
JOIN rooms2 op ON o.room_id = ***op.room_id
JOIN rooms3 p  ON op.person_id = p.person_id
WHERE o.room_id = ?
ORDER BY o.plate_order ASC

我不完全理解错误消息,但是op.room_id可能为空。

怪异的错误,恕我直言,但尝试左加入

SELECT o.*, op.*, p.* FROM rooms1 o
LEFT JOIN rooms2 op ON o.room_id = op.room_id
LEFT JOIN rooms3 p  ON op.person_id = p.person_id
WHERE o.room_id = ?
ORDER BY o.plate_order ASC

(末尾的分号;是多余的。]

© www.soinside.com 2019 - 2024. All rights reserved.