select * from sys_user where v_user_id='handy'
select * from t_busi_order_dtl where process_opr_id='handy'
这样查询都是OK的
select * from  t_busi_order_dtl a,sys_user b   where a.Process_opr_id=b.V_USER_ID and a.Process_opr_id='handy'
为什么这样就不行了呢??

解决方案 »

  1.   

    嗯有区别的,char(10)的话,如果字符不足10位会自动填充为10位,是定长数据,而varchar系列的数据类型是可变长的,长度不足并不会自动补位。你可以试试再建一个表,字段类型两表中任意一个类型相同,再插入一条记录测试下
      

  2.   


    ni你的 v_user_id和 process_opr_id 应该是 int类型的吧。而你的却是字符型?
     你把你的 2个表内容发来
     看下你的结构
      

  3.   

    没建表 直接把一个表的字段类型改了  不行
    后来建了个表t_b  id就是handy  结果还是没记录
    select * from  t_busi_order_dtl ,t_b   where  t_busi_order_dtl.Process_opr_id=t_b.id
      

  4.   

    sys_user表
    记录编号 V_REC_ID Varchar2 (10) PK
    人员ID V_USER_ID Varchar2 (10)
    人员名称 V_USER_NM Varchar2 (20) t_busi_order_dtl表
    预约单编号 Order_id  Number(6) sequence
    预约日期  Order_date  Char(8)
    处理要求  process_request  Varchar2(200)
    处理人员ID Process_opr_id Char(10) 对应sys_user表的V_USER_ID
    我现在就是想用Process_opr_id查出V_USER_NM的值
      

  5.   

    create table a(aid varchar2(20));
    create table b(bid varchar2(20));
    insert into a values('handy');
    insert into b values('handy');
    select * from a,b wher a.aid = b.bid;
      

  6.   

    select a.V_USER_NM
    from   sys_user a,
           t_busi_order_dtl b
    where  trunc(b.Process_opr_id) = trunc(a.V_USER_ID);那么试试这个吧
      

  7.   


    ora-01722 无效数字
    报错了
      

  8.   

    喔,不好意思,不是trunc,是trimtrim(b.Process_opr_id)= trim(a.V_USER_ID);
      

  9.   

    users表
    uid  uname  cid
    1     aa     1
    class表
    cid  cname  
    1    bbselect u.uname,c.cname  from  users u ,class c  where u.cid=c.cid
      

  10.   

    select a.V_USER_NM
    from   sys_user a,
           t_busi_order_dtl b
    where  trim(b.Process_opr_id) = trim(a.V_USER_ID) 
           and trim(b.Process_opr_id)='handy' ;
      

  11.   

    这样真可以啊,trim什么意思呢?去除空格?
      

  12.   

    楼上对的,trim就是去除空格