当前位置: 首页 > 面试题库 >

SQL过滤查询

宗政坚白
2023-03-14
问题内容

我有一个带有许多字段的表。我正在尝试在asp.net中创建搜索过滤器,以便用户可以按一个或多个字段进行搜索。所以基本上我想创建一个包含4个参数的存储过程,如果它不为null,它将把参数附加到WHERE子句中。

TableExample有4列,Col1 Col2 Col3 Col4

我希望有一种方法可以用一个存储过程完成此操作,而不必为每种可能的组合创建一个。

我正在尝试类似的方法,虽然这是不正确的,但到目前为止,它已经达到了目的。

谢谢!

CREATE PROCEDURE [dbo].[Search]
    @Col1 int,
    @Col2 int,
    @Col3 int,
    @Col4 int
AS

SET TRANSACTION ISOLATION LEVEL READ COMMITTED

SELECT *

FROM
    [dbo].[TestTable]
WHERE
    1=1
    CASE        
        WHEN @Col1 IN NOT NULL
        THEN AND [Col1] = @Col1

        WHEN @Col2 IN NOT NULL
        THEN AND [Col2] = @Col2

        WHEN @Col3 IN NOT NULL
        THEN AND [Col3] = @Col3

        WHEN @Col4 IN NOT NULL
        THEN AND [Col4] = @Col4
    END

问题答案:

我感谢大家的答复。但是,我做了一些不同的事情。我希望它可以帮助某人!这是我的处理方式:

CREATE PROCEDURE [dbo].[TestTable_Search]
    @Col1 int,
    @Col2 uniqueidentifier,
    @Col3 datetime,
    @Col4 datetime
AS

SET TRANSACTION ISOLATION LEVEL READ COMMITTED

SELECT *

FROM
    [dbo].[TestTable]
WHERE
    [Col1] = COALESCE(@Col1, Col1) AND
    [Col2] = COALESCE(@Col2, Col2) AND
    [Col3] >= COALESCE(@Col3 + "00:00:00", Col3) AND
    [Col4] <= COALESCE(@Col4 + "23:59:59", Col4)


 类似资料:
  • 问题内容: “过滤后的查询和过滤器”与“根查询和过滤器”之间有什么区别吗?例如 情况1: 情况2: 我在http://elasticsearch-users.115913.n3.nabble.com/Filtered-query-vs-using- filter-outside-td3960119.html中 找到了此讨论,但所引用的URL是404,并且解释过于简洁我。 请示教或提供指出这些区别的

  • 问题内容: 我有一个MS SQL查询,该查询通过从远程服务器提取数据。我要提取的数据需要按在运行时确定的日期进行过滤。当我像这样运行查询时: 然后可以远程应用该过滤器…但是,我实际上不希望使用“ 1/1/2009”作为日期-我希望该日期由用户定义的函数提供,例如: 该函数是返回日期时间的自定义CLR标量值函数…( 您可能会问为什么我需要这样做…细节有些复杂,所以请相信我-我必须这样做方式。 ) 当

  • 问题内容: 我有一个带有一个XML列的表。我想过滤掉XML中特定属性与字符串匹配的行,实质上是在WHERE或HAVING中进行。 桌子看起来像这样 和XML类似 我想获取所有@name属性与值匹配的ID。 我已经能够做到以下几点: 但这非常慢。 必须有更好的方法来对查询的输出进行过滤。 问题答案: 找到了。而不是使用query(),我应该使用exist()。 我的查询将是

  • 问题内容: 对于 内部联接 ,在子句或子句中应用过滤器的性能有何不同?哪个会更有效,或者优化器将使它们相等? 加入 VS 在哪里 Oracle11gR2 问题答案: 应该没有区别。在这两种情况下,优化器都应生成相同的计划,并且应该能够基于特定查询的最有效方法,在这两种情况下的连接之前,之后或之中应用谓词。 当然,事实优化 可以 做一些事情,一般来说,是不能保证优化器 会 做一些实际的特定查询。随着

  • 本文向大家介绍dynamics-crm 使用过滤器过滤API查询,包括了dynamics-crm 使用过滤器过滤API查询的使用技巧和注意事项,需要的朋友参考一下 示例 您可以使用filter属性从CRM检索值的子集。在此示例中,仅返回公司名称等于CompanyName的帐户。            

  • 问题内容: 我什么时候应该使用查询或过滤器或两者的某种组合都看不到任何描述。它们之间有什么区别?谁能解释一下? 问题答案: 区别很简单:过滤器被缓存并且不影响得分,因此比查询要快。也在这里看看。假设查询通常是用户输入的内容,并且几乎是不可预测的,而过滤器则可以帮助用户缩小搜索结果的范围,例如使用构面。