SELECT YYSLX,JZMC,JD,WD,XQ
FROM YIDONG_PT
WHERE JD !='UNDEFINED' AND SQRT(POWER(TO_NUMBER(JD)-120.60845,2)+POWER(TO_NUMBER(WD)-29.99588,2))<=0.005192000166144005
报错:ORA--1722:无效数字
但是换成0.22以上的数就对了,公式是求距离的,但是查其它的表时是对的,这个是移动的,其它两个是电信和联通,其它两表的JD和WD值无undefined,这个表的值有undefined值,字段都是VARCHAR2

解决方案 »

  1.   

    JD的值是不是有字符串的?不都是数字吧?
    有字符串就不行。比如说你执行下面语句,就会报ORA-01722: invalid number:
    select to_number('aa') from dual;
      

  2.   

    值有undefined值这就是原因了.如果没,就默认0,或其他什么默认值.
      

  3.   

    用decode 函数转成数字试试!
      

  4.   

    现在找出错了,sql语句没错,是因为建表的人导入数据时出错,多了一个空格什么的,把那个字段的数据更新就行了。谢谢大家!
      

  5.   

    现在找出错了,sql语句没错,是因为建表的人导入数据时出错,多了一个空格什么的,把那个字段的数据更新就行了。谢谢大家!