日期:2014-05-18  浏览次数:20469 次

sql 游戏~四数,+-*/~得另一数---小结(原创)
CREATE   FUNCTION   f_ww(@var   varchar(50),@vs   varchar(50))
RETURNS   char(1)
AS
begin
  if   len(@var) <> len(@vs)
    RETURN   'F '
  declare   @str   varchar(50),@char   varchar(10)
  declare   @varcharint   int,@vscharint   int
  declare   @varstr   varchar(50),@vsstr   varchar(50)
  set   @str=@var+ ', '
  while   charindex( ', ',@str)> 0
  begin
    select   @char=substring(@str,0,charindex( ', ',@str)),
      @str=substring(@str,charindex( ', ',@str)+1,len(@str)-charindex( ', ',@str)),
      @varcharint=0,@vscharint=0,
      @varstr= ', '+@var+ ', ',   @vsstr= ', '+@vs+ ', '
    while(charindex( ', '+@char+ ', ',@varstr))> 0
    begin
      select   @varcharint=@varcharint+1,
        @varstr=substring(@varstr,charindex( ', '+@char+ ', ',@varstr)+1+len(@char),len(@varstr))
    end
   
    while(charindex( ', '+@char+ ', ',@vsstr))> 0
    begin
      select   @vscharint=@vscharint+1,
        @vsstr=substring(@vsstr,charindex( ', '+@char+ ', ',@vsstr)+1+len(@char),len(@vsstr))
    end
  if(@varcharint <> @vscharint)
    RETURN   'F '
  end
  RETURN   'T '
end
go

create   proc   p_ww
@int1   dec(18,4),
@int2   dec(18,4),
@int3   dec(18,4),
@int4   dec(18,4),
@result   dec(18,4)
as
begin
set   nocount   on
select   DISTINCT   a.id   [aid],b.id   [bid],c.id   [cid],d.id   [did]   into   #wei
  from   (select   @int1   [id]
    union   all   select   @int2
    union   all   select   @int3
    union   all   select   @int4)   a,(select   @int1   [id]
    union   all   select   @int2
    union   all   select   @int3
    union   all   select   @int4)   b,(select   @int1   [id]
    union   all   select   @int2
    union   all   select   @int3
    union   all   select   @int4)   c,(select   @int1   [id]
    union   all   select   @int2
    union   all   select   @int3
    union   all   select   @int4)   d
where   dbo.f_ww(rtrim(a.id)+ ', '+   rtrim(b.id)+ ', '+   rtrim(c.id)+ ', '+   rtrim(d.id),rtrim(@int1)+ ', '+rtrim(@int2)+ ', '+rtrim(@int3)+ ', '+rtrim(@int4))= 'T '

create   table   #show(mula   varchar(100),result   int)

declare   @count1   varchar(10),@count2   varchar(10),@count3   varchar(10)
declare   @operator1   varchar(2),@operator2   varchar(2),@operator3   varchar(2)
set   @count1= '+,-,*,/, '

while(chari