当前位置: 首页 > 知识库问答 >
问题:

无效编号oracle jdbc

端木令雪
2023-03-14

我正在尝试执行以下查询:

String query =  "select NUMERO_CHAUFFEUR, avg(DISTANCE) as DISTANCE " +
                "from " +
                "(select NUMERO_CHAUFFEUR, " +
                "6387.7 * ACOS((sin(LATITUDE_DEPART / 57.29577951) * SIN(LATITUDE_ARRIVEE / 57.29577951)) + " +
                "(COS(LATITUDE_DEPART / 57.29577951) * COS(LATITUDE_ARRIVEE / 57.29577951) * " +
                "COS(LONGITUDE_ARRIVEE / 57.29577951 - LONGITUDE_DEPART / 57.29577951))) as DISTANCE " +
                "from " +
                "(select l.NUMERO_CHAUFFEUR, " +
                "regexp_substr(d1.COORDONNEES, '^[^,]+') as LATITUDE_DEPART, " +
                "trim(leading ',' FROM regexp_substr(d1.COORDONNEES, ',.*$')) AS LONGITUDE_DEPART, " +
                "regexp_substr(d2.COORDONNEES, '^[^,]+') as LATITUDE_ARRIVEE, " +
                "trim(leading ',' FROM regexp_substr(d2.COORDONNEES, ',.*$')) AS LONGITUDE_ARRIVEE " +
                "from LIVRAISONS l " +
                "inner join DEPOTS d1 on(l.NUMERO_DEPOT_DEPART = d1.NUMERO_DEPOT) " +
                "inner join DEPOTS d2 on(l.NUMERO_DEPOT_ARRIVE = d2.NUMERO_DEPOT) " +
                ")) " +
                "group by (NUMERO_CHAUFFEUR)";
NUMERO_CHAUFFEUR AVG(DISTANCE)
---------------- -------------
           1    507.064894
           2    703.326572
           5    846.966137
           4    511.914202
String query =  "select NUMERO_CHAUFFEUR, avg(DISTANCE) as DISTANCE " +
                "from " +
                "(select NUMERO_CHAUFFEUR, " +
                "to_number('6387.7') * ACOS((sin(LATITUDE_DEPART / to_number('57.29577951')) * SIN(LATITUDE_ARRIVEE / to_number('57.29577951'))) + " +
                "(COS(LATITUDE_DEPART / to_number('57.29577951')) * COS(LATITUDE_ARRIVEE / to_number('57.29577951')) * " +
                "COS(LONGITUDE_ARRIVEE / to_number('57.29577951') - LONGITUDE_DEPART / to_number('57.29577951')))) as DISTANCE " +
                "from " +
                "(select l.NUMERO_CHAUFFEUR, " +
                "to_number(regexp_substr(d1.COORDONNEES, '^[^,]+')) as LATITUDE_DEPART, " +
                "to_number(trim(leading ',' FROM to_number(regexp_substr(d1.COORDONNEES, ',.*$')))) AS LONGITUDE_DEPART, " +
                "to_number(regexp_substr(d2.COORDONNEES, '^[^,]+')) as LATITUDE_ARRIVEE, " +
                "to_number(trim(leading ',' FROM to_number(regexp_substr(d2.COORDONNEES, ',.*$')))) AS LONGITUDE_ARRIVEE " +
                "from LIVRAISONS l " +
                "inner join DEPOTS d1 on(l.NUMERO_DEPOT_DEPART = d1.NUMERO_DEPOT) " +
                "inner join DEPOTS d2 on(l.NUMERO_DEPOT_ARRIVE = d2.NUMERO_DEPOT) " +
                ")) " +
                "group by (NUMERO_CHAUFFEUR)";

共有1个答案

麹飞航
2023-03-14

尝试将字符串转换为数字时发生ORA-01722错误,而该字符串无法转换为数字。regexp_substr返回字符串,您将其称为LATITUDE_DEPART,然后使用这个不正确的值进行数学运算。您应该首先将其转换为数字。这可能对您有帮助:

TO_NUMBER(regexp_substr(d1.COORDONNEES, '^[^,]')) LATITUDE_DEPART

对所有相同的零件执行此操作。

 类似资料:
  • 我遇到了一个SQL案例的麻烦,问题是我试图运行一个有7个不同列的案例,这些列可以有不同类型的数据(字符串,日期,数字),取决于id。 这意味着在某些id下,列中的行将是字符串,而在其他id下,列中的行将是数字。 我意识到这不是结构化数据库的传统用法,但是这个特定的表有特定的用途,在过去这种方法被认为是有用的。 该案例应该仅在列具有数字时才选择“then”。但是,当我运行它时,我得到一个无效的数字O

  • 一个非常容易的人,下面的插入是给我

  • 我正在尝试执行查询,但它不断给出错误 ORA-01722:无效号码01722.00000-"无效号码" 我检查了是否有像01722这样的数字。00000或类似在我的表中,但没有。我还检查了查询,如果我在非数值中使用算术运算符,如果我正在比较一个数字和非数字值,但仍然什么都没有。我所有的表列都是类型,现在已经一整天了,我还没有找到如何解决它。查询如下:

  • 问题内容: 尝试运行以下功能时,出现错误“ SQLSTATE [HY093]:无效的参数号”: 我觉得这很简单,我只是没有抓住。有任何想法吗? 问题答案: 尝试: 和 文档摘录(http://php.net/manual/zh/pdo.prepare.php): 调用PDOStatement :: execute()时,对于要传递给语句的每个值,必须包含一个唯一的参数标记。您不能在准备好的语句中两

  • 使用Oracle Database 11g Express Edition 这创建了我的Car_Asset表: 这将创建我的保险人表: 我想在Car_Asset表中添加Insurer_No作为外键 这是我得到ORA-00904:"INSURER_NO":无效标识符的地方:

  • 我在包裹抛出错误中有一个查询 ORA-01722:无效号码。 我试了很多方法,但都没有成功。 null 请给我建议解决办法