【发布时间】:2011-10-07 02:57:06
【问题描述】:
ALTER procedure FullSearch(@txtSearch as nvarchar(500),@a1 as bit,@a2 as bit,@a3 as bit,
@a4 as bit,@a5 as bit)
as
begin
if(@a1='true' and @a2='false' and @a3='false' and @a4='false' and @a5='false')
begin
select a1 from b where a1 like '%'+@txtSearch+%'
end
if(@a1='false' and @a2='true' and @a3='false' and @a4='false' and @a5='false')
begin
select a2 from b where a2 like '%'+@txtSearch+%'
end
if(@a1='false' and @a2='false' and @a3='true' and @a4='false' and @a5='false')
begin
select a3 from b where a3 like '%'+@txtSearch+%'
end
if(@a1='false' and @a2='false' and @a3='false' and @a4='true' and @a5='false')
begin
select a4 from b where a4 like '%'+@txtSearch+%'
end
if(@a1='false' and @a2='false' and @a3='false' and @a4='false' and @a5='true')
begin
select a5 from b where a5 like '%'+@txtSearch+%'
end
if(@a1='true' and @a2='true' and @a3='false' and @a4='false' and @a5='true')
begin
select a1,a2 from b where a1 like '%'+@txtSearch+%' or a2 like '%'+@txtSearch+%'
end
if(@a1='true' and @a2='false' and @a3='true' and @a4='false' and @a5='true')
begin
select a1,a3 from b where a1 like '%'+@txtSearch+%' or a3 like '%'+@txtSearch+%'
end
if(@a1='true' and @a2='false' and @a3='false' and @a4='true' and @a5='true')
begin
select a1,a4 from b where a1 like '%'+@txtSearch+%' or a4 like '%'+@txtSearch+%'
end
.
.
.
.
end
我在搜索框 a1-a5 到复选框那个用户可以选择 a1 和 a2 和 a3 和 a4 和 a5
如果选择的字段 a1Û a1字段数据库搜索
如果选择的字段 a2Û a2字段数据库搜索
如果选中的字段 a1,a2؛ a1,a2 字段数据库搜索
如果选中字段 a2,a5؛ a2,a5 字段数据库搜索
如果选择字段 a2,a4,a5؛ a2,a4,a5 字段数据库搜索
如果使用 a1-a9,所有状态检查是否是 5 个非常非常大的阶乘
有更简单的方法可以做到这一点。
这是一种算法,可以用任何语言 c、c#、vb 完成
【问题讨论】:
-
这与 C# 有什么关系?这里有什么问题?
-
不是。显然是 TSQL。
标签: sql sql-server-2008 stored-procedures sql-server-2000