类似:你自己写31个就行了 create function f_test (@f1 int,@f2 int ,@f3 int ,@f4 int) returns int as begin declare @result int select @result= case when @f1>0 then 1 else 0 end+ case when @f2>0 then 1 else 0 end+ case when @f3>0 then 1 else 0 end+ case when @f4>0 then 1 else 0 end return @result end go 用的时候select * from 表 where dbo.f_test(f1,f2...f31)=10
应该是 create function f_test (@f1 int,@f2 int ,@f3 int ,@f4 int) returns int as begin declare @result int select @result= case when @f1=0 then 1 else 0 end+ case when @f2=0 then 1 else 0 end+ case when @f3=0 then 1 else 0 end+ case when @f4=0 then 1 else 0 end return @result end
比如要找至少10个字段为0的,且排序select * from 表 where dbo.f_test(f1,f2...f31)>10 order by dbo.f_test(f1,f2...f31) desc
create function f_test (@f1 int,@f2 int ,@f3 int ,@f4 int)
returns int as
begin
declare @result int
select @result=
case when @f1>0 then 1 else 0 end+
case when @f2>0 then 1 else 0 end+
case when @f3>0 then 1 else 0 end+
case when @f4>0 then 1 else 0 end
return @result
end
go
用的时候select * from 表 where dbo.f_test(f1,f2...f31)=10
create function f_test (@f1 int,@f2 int ,@f3 int ,@f4 int)
returns int as
begin
declare @result int
select @result=
case when @f1=0 then 1 else 0 end+
case when @f2=0 then 1 else 0 end+
case when @f3=0 then 1 else 0 end+
case when @f4=0 then 1 else 0 end
return @result
end
order by dbo.f_test(f1,f2...f31) desc