【问题标题】:if between 10 variable [closed]如果在 10 个变量之间[关闭]
【发布时间】: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


【解决方案1】:

您需要使用动态 SQL 并生成句子。查看this 链接。请特别注意使用sp_executesql部分。类似的东西几乎正是您所需要的。

【讨论】:

  • 请详细描述一下
  • 阅读我发布的链接。你需要的一切都在那里。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-01
  • 2021-12-29
  • 1970-01-01
  • 2015-04-15
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多