sql查询仅显示基于搜索条件的结果

时间:2014-03-14 19:15:25

标签: sql report

我有一张表,里面有无数条目。在每个条目(行)中,我尝试搜索多个列(product_1,product_2,product_3等)。我正在尝试为SQL报告生成一个查询,该报告在与用户搜索条件匹配时会将与故障单关联的故障单号和产品吐出。这是我到目前为止(SELECT语句只选择3个产品,当成品将选择19)。

SELECT     enteredby, trackingNum, ticketStatus, enteredtime, accountManager, requestor,   shiptoaddress, product_1, product_2, product_3, product_4, product_5, product_6
FROM         c2_ticket
WHERE     (product_1 LIKE '%' + @PRODUCT + '%') OR
                  (product_2 LIKE '%' + @PRODUCT + '%') OR
                  (product_3 LIKE '%' + @PRODUCT + '%') OR
                  (product_4 LIKE '%' + @PRODUCT + '%') OR
                  (product_5 LIKE '%' + @PRODUCT + '%') OR
                  (product_6 LIKE '%' + @PRODUCT + '%') OR
                  (product_7 LIKE '%' + @PRODUCT + '%') OR
                  (product_8 LIKE '%' + @PRODUCT + '%') OR
                  (product_10 LIKE '%' + @PRODUCT + '%') OR
                  (product_11 LIKE '%' + @PRODUCT + '%') OR
                  (product_12 LIKE '%' + @PRODUCT + '%') OR
                  (product_13 LIKE '%' + @PRODUCT + '%') OR
                  (product_14 LIKE '%' + @PRODUCT + '%') OR
                  (product_15 LIKE '%' + @PRODUCT + '%') OR
                  (product_16 LIKE '%' + @PRODUCT + '%') OR
                  (product_17 LIKE '%' + @PRODUCT + '%') OR
                  (product_18 LIKE '%' + @PRODUCT + '%') OR
                  (product_19 LIKE '%' + @PRODUCT + '%')

查询会显示正确的信息。但是,我只希望它根据用户搜索的内容吐出产​​品。例如,其中一行可能列出了6个产品,但只有2个符合搜索条件。因此,我只希望它吐出与搜索匹配的产品,而不是列出所有产品。我希望我能够证明我想要完成的任务。

1 个答案:

答案 0 :(得分:0)

您的查询中需要输入参数类似于@PRODUCT。您需要使用类似存储过程的东西。然后通过传递用户搜索参数,您可以找到与用户搜索条件匹配的记录。

简单存储过程的示例:

CREATE PROCEDURE ProductSearch
  (
     @userSearchTerm nvarchar(255)
  )
AS
BEGIN
     SELECT *
     FROM c2_ticket
     WHERE product_1 LIKE '%' + @userSearchTerm + '%'
END

这回答了你的问题吗?