2

我在 Oracle 数据库中有一个具有以下结构的表:

CREATE TABLE PASSENGERS
(ID VARCHAR2(6),
 PASSPORTNO VARCHAR2(14));

我想获取多次注册的乘客的 ID。为此,我运行以下查询。

SELECT ID FROM PASSENGERS WHERE PASSPORTNO IN 
  (SELECT PASSPORTNO FROM PASSENGERS
     GROUP BY PASSPORTNO 
     HAVING COUNT(*)>1);

但我收到“不支持的字符集”错误。我错过了什么?

4

2 回答 2

2

Mostly seems like a data issue. Try checking the exact data row which is causing the issue.

Use : DML Error Logging - http://www.oracle-base.com/articles/10g/dml-error-logging-10gr2.php

Btw, you are doing GROUP BY passportno .Is that correct? (This implies multiple passports can have same passport number). I guess it should be GROUP BY id

于 2013-04-20T20:48:11.110 回答
2

由于与 PASSPORTNO 相关的所有查询都运行良好,因此您至少还有两件事要做:

  1. 运行SELECT ID FROM PASSENGERS并检查错误,如果出现错误,则可能与存储在表中的内容有关
  2. 尝试使用另一个 SQL 工具来执行您的查询,您的客户端操作系统可能正在使用数据库在处理您的查询以显示返回行时无法理解的系统编码。

由于 ID 和 PASSPORTNO 都是 varchar 字段,因此其中一个有一个很大的变化,即在其中一个 oracle 无法正确解码的数据。

于 2013-04-20T12:09:36.677 回答