问题在where perentid='101.1'
大概是类型不匹配吧,你确信perentid为CHAR类型吗?

解决方案 »

  1.   

    的确问题出在 Where perentid='101.1'上。
    perentid只不过是一个标题,可能不能直接用在赋值上吧。
    我也正在进一步的试验中
    还望多提保贵意见!
      

  2.   

    select materialid,
            Perentid=case len(materialid) 
            when '5' then  substring(Materialid,1,len(Materialid)-2)
            when '3' then  substring(Materialid,1,len(Materialid)-3)
            when '8' then  substring(Materialid,1,len(Materialid)-3)
            when '11' then  substring(Materialid,1,len(Materialid)-3)
            when '15' then  substring(Materialid,1,len(Materialid)-4)
            when '18' then  substring(Materialid,1,len(Materialid)-3)
            when '21' then  substring(Materialid,1,len(Materialid)-3) end 
            from Table1 
    where len(materialid)=8//或相关的条件,
    perentid只是临时字段,不能用于where.
      

  3.   

    to: clacklin(海风) 
    不错这种方法是可以找出我要找的记录。
    因为上面的数据是测试之用。len(materialid)='8'也正好只有一条记录。
    如果len(materialid)='8'有2条或更多的记录的话就找不出来了。因为我在找记录的时候不能根据长度来找。非得定位到一个具体的perentid的值.真的是好急啊。
    难道就再没能更好的办法可以解决了吗?
      

  4.   

    select materialid,
            Perentid=case len(materialid) 
            when '5' then  substring(Materialid,1,len(Materialid)-2)
            when '3' then  substring(Materialid,1,len(Materialid)-3)
            when '8' then  substring(Materialid,1,len(Materialid)-3)
            when '11' then  substring(Materialid,1,len(Materialid)-3)
            when '15' then  substring(Materialid,1,len(Materialid)-4)
            when '18' then  substring(Materialid,1,len(Materialid)-3)
            when '21' then  substring(Materialid,1,len(Materialid)-3) end 
            from Table1 
    where len(materialid)=8 and substring(Materialid,1,len(Materialid)-3)='101.1'