存储过程巧用 参数实现 条件筛选

  1. 介绍: 有的时候一个存储过程里面既要实现无条件筛选,也要实现条件筛选的组合,可以采用以下的便捷方式

  2. 对于字符串的条件筛选

        IF ISNULL(@name, '') = ''
        BEGIN
            SET @name = '';
        END
        ELSE
        BEGIN
            SET @name = '%' + @name + '%';
        END
    
        IF ISNULL(@supplierName, '') = ''
        BEGIN
            SET @supplierName = '';
        END
        ELSE
        BEGIN
            SET @supplierName = '%' + @supplierName + '%';--拼接好直接使用
        END
        
        
        
        SELECT esi.Id
            ,esi.NAME
            ,esi.Usage
            ,esi.Standard
        FROM ESD_SampleItem esi
        WHERE esi.CompanyCode = @companyCode
            AND esi.IsDeleted = 0
            AND esi.IsActiveVersion = 1
            AND (
                @name = '' --如果为 null 筛选全部,用 OR 来分割操作
                OR esi.NAME LIKE @name --如果不为null,模糊查询
                )
                --或者如下
             AND (
                ISNULL(@system, '') = ''
                OR d.Systems LIKE '%,' + @system + ',%'
                )
            AND (
                @supplierName = ''
                OR EXISTS (
                    SELECT 1
                    FROM ESD_SampleItemSupplier esis
                    WHERE esis.SampleItemId = esi.Id
                        AND esis.SupplierName LIKE @supplierName
                    )
                )
        ORDER BY esi.Id offset(@pageIndex - 1) * @pageSize rows
    
        FETCH NEXT @pageSize rows ONLY

     

  3. 对于值类型的条件筛选

    AND (
                    @supplier <= 0 -- @supplier <= 0 查询全部
                    OR s.SupplierId = @supplier --查询与之对应的条件
                    )

     

转载于:https://www.cnblogs.com/wang-min/p/10333870.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值