我用SQL语句select * from st_track_ct_ft_new where st_invoice_no = '13-T00S12-03M00' 在数据库中查看,执行结果中含有一条数据字段st_shop_id值为2419的记录,
但我将SQL语句增加条件为如下:
select * from st_track_ct_ft_new where st_invoice_no = '13-T00S12-03M00' and st_shop_id = 2419 则查询结果为空,
不知什么原因

解决方案 »

  1.   

    我估计你的st_shop_id是varchar2型,而且存在不可见字符.
      

  2.   


    /--试一下:  select *
        from st_track_ct_ft_new
       where st_invoice_no = '13-T00S12-03M00'
         and st_shop_id = '2419';
      

  3.   

    select * from st_track_ct_ft_new where st_invoice_no = '13-T00S12-03M00' and trim(st_shop_id) = 2419 
    可以试一下
      

  4.   

    select length(st_shop_id) from st_track_ct_ft_new where st_invoice_no = '13-T00S12-03M00';看下长度是多少,
    怀疑不可见字符
      

  5.   

    1)有不可见字符,与你看到的不一致
    2)你的字段是number类型吗?
    3) 是不是建有函数索引之类的东东,导致了oracle bug?
      

  6.   

    select length(t_shop_id),t_shot_id from st_track_ct_ft_new where st_invoice_no = '13-T00S12-03M00' 看看长度
      

  7.   


    看你那個數據類型是什麼?
    numeric肯定是沒有問題的,估計varchar或varchar2或char它後面有空格看不到的
    所以用
    select length(t_shop_id from st_track_ct_ft_new where st_invoice_no = '13-T00S12-03M00' 
    看它的度長是多少?
      

  8.   

    少個右括號了
    select length(t_shop_id) from st_track_ct_ft_new where st_invoice_no = '13-T00S12-03M00' 
      

  9.   

    因为st_shop_id是字符串类型的,有不可见的字符导致的。
    用下面的就可以了:
    SELECT *
      FROM ST_TRACK_CT_FT_NEW
     WHERE ST_INVOICE_NO = '13-T00S12-03M00'
       AND ST_SHOP_ID LIKE '%2419%';
      

  10.   

    一定是存在不可见字符 我也遇到过
    我是这样处理的 
    select * from st_track_ct_ft_new where st_invoice_no = '13-T00S12-03M00' and trim(st_shop_id) = 2419;
    或者按这样处理
    SELECT * 
      FROM ST_TRACK_CT_FT_NEW 
    WHERE ST_INVOICE_NO = '13-T00S12-03M00' 
      AND ST_SHOP_ID LIKE '%2419'
    最后一定可以的
      

  11.   

    呵~~,有以前也碰到过这种情况,主要是存在一些不可见的字符,执行select * from st_track_ct_ft_new where st_invoice_no = '13-T00S12-03M00'这个sql后,将你看到的st_shop_id值为2419的记录copy到记事本上,应该就可以看到异常字符了。
      

  12.   

    这个我也怀疑过,但是通过length(st_shop_id),对于这条记录结果为4,因此排除可见字符的问题
    该字段类型为integer类型,在查询时,输入条件 st_shop_id like '%2419%' 、to_number(st_shop_id) = 2419 ,这样都可以解决,创建一个相同结构的表,将数据迁移到新表,查询时输入st_shop_id = '2419' 都是可以了;初步怀疑是因为数据库刚还原到这个服务器,后来解决方法为,重建了一下这个字段的索引解决了问题,怀疑是索引的问题;供大家讨论。