【问题标题】:How to check multiple Task completed or not in Sql query based on user input from webpage?如何根据网页的用户输入在 Sql 查询中检查多个任务是否完成?
【发布时间】:2015-04-23 10:25:36
【问题描述】:

我在表中有一些任务列表,每个任务都有“已完成”列,有些任务可能已完成或未完成。在网页中,我有文本框,我们可以传递多个任务名称,我想向用户显示消息任务是否完成。在这里,如何检查用户是否传递了多个任务名称,其中一个可能已完成,另一个可能未完成。 SQL查询中怎么做?

【问题讨论】:

  • 请提供更多细节。网页是用什么语言创建的?你是如何连接到数据库的?你的数据表的结构是什么?
  • asp.net 并连接到 Microsoft SQL 服务器
  • 表格包含任务 ID、任务名称、已完成等列。
  • 您是否正在查看可能的 plsql 过程,将参数传递给它并获得所需的结果?
  • @anudeepks 完全正确...但是我能够将参数传递给 sql 过程并将所需的消息发送给用户...。如果任务完成与否,我正在发送消息...但是当用户输入多个任务,其中一个可能完成其他可能没有..在这种情况下我失败了。请帮忙。提前致谢

标签: sql asp.net sql-server mssql-jdbc


【解决方案1】:

我认为您正在根据您的问题寻找一些动态 SQL。

出于此答案的目的,我假设字符串值是逗号分隔的,逗号后可能有一个空格:

-- search criteria
DECLARE @taskNames NVARCHAR(30) = 'task1, task2, task3'
--set up some dummy data
SELECT  *
INTO    #TasksTemp
FROM    ( SELECT    1 AS ID ,
                    'task1' AS TaskName ,
                    1 AS Completed
          UNION
          SELECT    2 AS ID ,
                    'task2' AS TaskName ,
                    0 AS Completed
          UNION
          SELECT    3 AS ID ,
                    'task3' AS TaskName ,
                    1 AS Completed
          UNION
          SELECT    4 AS ID ,
                    'task4' AS TaskName ,
                    0 AS Completed
        ) t

-- dynamic sql variable
DECLARE @sql NVARCHAR(200)

-- SANITIZE input
-- cover case where comma may have space after it
SET @taskNames = REPLACE(@taskNames, ', ', ',')
-- add quote marks to seperate string values
SET @taskNames = '''' + REPLACE(@taskNames, ',', ''',''') + ''''

SET @sql = 'SELECT * FROM #TasksTemp WHERE TaskName IN (' + @taskNames + ')'
PRINT @sql
-- will rpoduce:
-- SELECT * FROM #TasksTemp WHERE TaskName IN ('task1','task2','task3')

-- run the dynamic sql
EXEC sp_executesql @sql

DROP TABLE #TasksTemp

您可能只需要调整代码以适应不同的分隔符。

【讨论】:

  • 感谢您的帮助......您所做的所有假设都是正确的......您只考虑三个值作为输入......但我们不知道用户将输入多少个值进入文本框....
  • @Tarun 这将适用于任意数量的逗号分隔值,这只是一个简短的演示,您可以编辑示例代码并查看
猜你喜欢
  • 2018-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-22
  • 2021-12-17
相关资源
最近更新 更多