with t as(
select 00107189084509445793 id from dual)
select id from t where id=1071890845094457931 1.07189084509446E17
会变成科学计数法,不会少一位,位数太多最好用varchar2类型

解决方案 »

  1.   


    我看字符类型是nvarchar(30),应该不是字符类型的原因吧?因为我在别的电脑也用同一个软件是可以的,
    在本机用SQL PLUS也是可以的
      

  2.   

    是不是oracle11G的原因?想问下这个软件在那里改变ORACLE使用的路径?就是我现在电脑上有oracle11g和oracle9I客户端,这个貌似默认的是用oracle11G连接服务器的,我就想问下能不能在那设置把他改成ORACLE9I?
      

  3.   

    是否是版本引起的
    select * from  v$version;
    Oracle Database 10g Release 10.1.0.2.0 - Production
    PL/SQL Release 10.1.0.2.0 - Production
    CORE 10.1.0.2.0 Production
    TNS for 32-bit Windows: Version 10.1.0.2.0 - Production
    NLSRTL Version 10.1.0.2.0 - Productioncreate table t1(id1 nvarchar(30));
    提示缺失右括号create table t(id nvarchar2(30));
    insert into t values('00107189084509445793');
    select id from t where id=00107189084509445793;
    输出:
    ID
    00107189084509445793
      

  4.   

    我发现用11g连接的时候NVARCHAR2的栏位有的会少一位,有的有其他字段又不少,varchar2字段的正常,
    而9I连接的正常。很奇怪???
      

  5.   

    使用varchar2(100)肯定正确
      

  6.   

    你如果是varchar字符类型,那你用
    select sscc from table sscc='0010718908450944579'试试。
      

  7.   

    NVARCHAR2不行,varchar2可以,到底为什么?
      

  8.   

    我也遇到同样的问题,不过是nvarchar2, 用substr截取的问题。 用SQL developer与sqlplus的结果不同
    接xiaodejun5241的code 
    PLSQL developer:select substr(id,1,1) from t;
    结果为空:
    select substr(id,1,2) from t;
    结果:0select substr(id,1,1) from t;
    结果为空:0
    select substr(id,1,2) from t;
    结果:00
    SQLPLUS:问题依旧没解决我的版本:
    Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production
    PL/SQL Release 11.2.0.2.0 - Production
    CORE 11.2.0.2.0 Production
    TNS for 32-bit Windows: Version 11.2.0.2.0 - Production