declare @s varchar(1000)--> declare @s varchar(8000)

解决方案 »

  1. declare @s varchar(1000) 
    -->
    declare @s varchar(4000) 
      

  2. if Exists ( 
      select m.e,m.f,m.g 
        from(select a.* from mb10 a,zt3 b where a.e=b.e and a.f=b.f and a.g=b.g) m, 
            (select a.* from mb10 a,qt1 b where a.e=b.e and a.f=b.f and a.g=b.g) q 
          where (m.a!=q.a and m.a!=q.b and m.a!=q.c and m.a!=q.d) and (m.b!=q.a and m.b!=q.b and m.b!=q.c and m.b!=q.d) and 
                (m.c!=q.a and m.c!=q.b and m.c!=q.c and m.c!=q.d) and (m.d!=q.a and m.d!=q.b and m.d!=q.c and m.d!=q.d) and             (q.a!=p.a and q.a!=p.b and q.a!=p.c and q.a!=p.d) and (q.b!=p.a and q.b!=p.b and q.b!=p.c and q.b!=p.d) and 
                (q.c!=p.a and q.c!=p.b and q.c!=p.c and q.c!=p.d) and (q.d!=p.a and q.d!=p.b and q.d!=p.c and q.d!=p.d)) 
        insert into mub 
        select n.e,n.f,n.g from zt3 z,mb10 m,sd..mb10 n 
          where z.e=m.e and z.f=m.f and z.g=m.g 
          and (m.a=n.a or m.a=n.b or m.a=n.c or m.a=n.d  or  m.b=n.a or m.b=n.b or m.b=n.c or m.b=n.d or 
              m.c=n.a or m.c=n.b or m.c=n.c or m.c=n.d  or  m.d=n.a or m.d=n.b or m.d=n.
    PRINT出来的结果明显的长度不够
      

  3. declare @ub int 
    select @ub=0 
    while @ub <=10 
    begin   declare @s nvarchar(4000) 
      set @s= 
      'if Exists ( 
      select m.e,m.f,m.g 
        from(select a.* from mb'+ltrim(@mb)+' a,zt3 b where a.e=b.e and a.f=b.f and a.g=b.g) m, 
            (select a.* from mb'+ltrim(@mb)+' a,qt1 b where a.e=b.e and a.f=b.f and a.g=b.g) q 
          where (m.a!=q.a and m.a!=q.b and m.a!=q.c and m.a!=q.d) and (m.b!=q.a and m.b!=q.b and m.b!=q.c and m.b!=q.d) and 
                (m.c!=q.a and m.c!=q.b and m.c!=q.c and m.c!=q.d) and (m.d!=q.a and m.d!=q.b and m.d!=q.c and m.d!=q.d) and             (q.a!=p.a and q.a!=p.b and q.a!=p.c and q.a!=p.d) and (q.b!=p.a and q.b!=p.b and q.b!=p.c and q.b!=p.d) and 
                (q.c!=p.a and q.c!=p.b and q.c!=p.c and q.c!=p.d) and (q.d!=p.a and q.d!=p.b and q.d!=p.c and q.d!=p.d)) 
        insert into mub 
        select n.e,n.f,n.g from zt3 z,mb'+ltrim(@mb)+' m,sd..mb'+ltrim(@mb)+' n 
          where z.e=m.e and z.f=m.f and z.g=m.g 
          and (m.a=n.a or m.a=n.b or m.a=n.c or m.a=n.d  or  m.b=n.a or m.b=n.b or m.b=n.c or m.b=n.d or 
              m.c=n.a or m.c=n.b or m.c=n.c or m.c=n.d  or  m.d=n.a or m.d=n.b or m.d=n.c or m.d=n.d) 
        union all select w.e,w.f,w.g from wy w 
                    where Exists (select 1 from zt3 z,mb'+ltrim(@mb)+' m,sd..mb'+ltrim(@mb)+' n 
                                    where z.e=m.e and z.f=m.f and z.g=m.g 
                                    and (m.a=n.a or m.a=n.b or m.a=n.c or m.a=n.d  or  m.b=n.a or m.b=n.b or m.b=n.c or m.b=n.d or 
                                        m.c=n.a or m.c=n.b or m.c=n.c or m.c=n.d  or  m.d=n.a or m.d=n.b or m.d=n.c or m.d=n.d))' 
      exec(@s) set @[email protected]+1 
    end 
      

aliyun

类似问题 »