Oracle 获得;ORA-01482:不支持的字符集“;在模式中使用WHERE时

Oracle 获得;ORA-01482:不支持的字符集“;在模式中使用WHERE时,oracle,Oracle,我在Oracle数据库中有一个具有以下结构的表: CREATE TABLE PASSENGERS (ID VARCHAR2(6), PASSPORTNO VARCHAR2(14)); 我想得到多次登记的乘客的身份证。为此,我运行以下查询 SELECT ID FROM PASSENGERS WHERE PASSPORTNO IN (SELECT PASSPORTNO FROM PASSENGERS GROUP BY PASSPORTNO HAVING COUNT(*

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

CREATE TABLE PASSENGERS
(ID VARCHAR2(6),
 PASSPORTNO VARCHAR2(14));
我想得到多次登记的乘客的身份证。为此,我运行以下查询

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

但我得到了“未移植字符集”错误。我遗漏了什么?

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

  • 运行
    从乘客中选择ID
    并检查是否有错误,如果出现错误,则可能会与表中存储的内容关联
  • 尝试另一个SQL工具来执行您的查询,您的客户端操作系统可能正在使用数据库在处理您的查询时无法理解的系统编码来显示返回的行

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

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

  • 运行
    从乘客中选择ID
    并检查是否有错误,如果出现错误,则可能会与表中存储的内容关联
  • 尝试另一个SQL工具来执行您的查询,您的客户端操作系统可能正在使用数据库在处理您的查询时无法理解的系统编码来显示返回的行

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

    大多数情况下似乎是数据问题。请尝试检查导致问题的确切数据行

    使用:DML错误记录-


    顺便说一句,您正在使用
    分组密码no
    。对吗?(这意味着多个护照可以有相同的护照号码)。我想应该是
    按id分组

    似乎主要是数据问题。请尝试检查导致问题的确切数据行

    使用:DML错误记录-



    顺便说一句,您正在使用
    分组密码no
    。对吗?(这意味着多个护照可以有相同的护照号码)。我想它应该是
    groupbyid

    ,它可能会帮助您正确运行这些查询而不会出现任何错误:1。从乘客2中选择PASSPORTNO。按从乘客组中选择PASSPORTNOPASSPORTNO@loki,是的,如果我单独运行这些查询,它们执行时不会出现问题。您也可以尝试一下:从乘客中选择计数(PASSPORTNO),我觉得这应该会给出错误。不,@loki,它运行得非常好,可能会帮助您确保这些查询正常运行,不会出现任何错误:1。从乘客2中选择PASSPORTNO。按从乘客组中选择PASSPORTNOPASSPORTNO@loki,是的,如果我单独运行这些查询,它们会毫无问题地执行。您也可以尝试一下:从乘客处选择计数(PASSPORTNO),我觉得这应该会给出错误。不,@loki,它运行得非常好。从乘客处选择ID正常运行。我在SQL plus上试过,得到了同样的错误,当你说SQL正常运行时,它在SQL plus中出错,它在哪里正常运行?您试图用于最终查询的工具是什么?@Karl,我在Windows7的SQL Plus上运行了相同的返回查询错误。同样的错误。是的,@ararog,你似乎是对的。我删除了90%的记录(当然是在一个克隆表中),然后尝试运行查询。猜猜看,它成功了。因此,某些记录包含Oracle或Windows无法解码的编码。从乘客中选择ID正常运行。我在SQL plus上试过,得到了同样的错误,当你说SQL正常运行时,它在SQL plus中出错,它在哪里正常运行?您试图用于最终查询的工具是什么?@Karl,我在Windows7的SQL Plus上运行了相同的返回查询错误。同样的错误。是的,@ararog,你似乎是对的。我删除了90%的记录(当然是在一个克隆表中),然后尝试运行查询。猜猜看,它成功了。因此,有些记录包含Oracle或Windows无法解码的编码。我会仔细检查,因为同一个人可能已经做过不止一次乘客,并且考虑到还没有安装个人资料跟踪系统(我知道这样会更好,但这是另一个主题)这就是它应该是的方式。我也这样做,因为同一个人,可能已经成为乘客不止一次,并且考虑到还没有安装个人资料跟踪系统(我知道这会更好,但这是另一个主题),那么这就是它应该是的方式。