我想查询一个表里面的xmbh等于另个表的spbbh等数据
我是这样写的:select * from vi_fysp fysp,vi_wdys wdys where fysp.xmbh=wdys.spbbh
但是查询不出来数据,可是我这样写
:select * from vi_fysp,vi_wdys where vi_fysp.xmbh='test' and vi_wdys.spbbh='test'
我想下面就查询的出来???

解决方案 »

  1.   

    是不是数据库里面的字段大小不对??一个表是varchar2(200),一个是char(10)
      

  2.   

    你trim试下:
    select * from vi_fysp fysp,vi_wdys wdys where trim(fysp.xmbh)=trim(wdys.spbbh)
      

  3.   

    两个长度不同,3楼的就应该可以解决
    varchar2的是字符串的实际长度,char(10)不足10的会用空格补齐到10个
      

  4.   

    类型不一样肯定不行了,char如果不够长的话带空格的
    varchar2不是
      

  5.   

    再尝试下
    select * from vi_fysp,vi_wdys where vi_fysp.xmbh= vi_wdys.spbbh看下嘛原因
     
      

  6.   

    这很简单啊,varchar2(200)是可变长字符串,你存入什么数据库就放什么(200位之内),但是char(10)是固定长度,你存放一个值,数据库会判断是不是10位,不够10为的话就补空格。
    比如你存放'abc',varchar2(200)类型存放结果是'abc',但是char(10)类型存放结果是'abc       '
    楼主可以试一试,解决方法就像3楼那样,trim是前后两边都去空格!