“拼字符串”的存储过程

 前两天在做一个新闻模块的时候遇到了点困难 ,就是多条件查询该怎么做。后来经过想他人请教终于把问题解决了。现在来和大家分享一下。

 表设计如下:

存储过程如下:

set  ANSI_NULLS  ON
set  QUOTED_IDENTIFIER  ON
go

--  =============================================
--
 Author:  <Hongyu Niu>
--
 Create date: <2007-7-21>
--
 Description: <多条件查询新闻>
--
 Return Value: 
--
 =============================================
ALTER   PROCEDURE   [ dbo ] . [ P_News_ContentGetAll ]
@StrFilter   varchar ( 200 )   -- 查询的过滤条件
AS
declare   @Str   varchar  ( 1000 )
set   @Str   =   ' SELECT  dbo.T_News_Content.NewsID, dbo.T_News_Content.NewsTitle,
  dbo.T_News_Content.[Content], dbo.T_News_Content.InDate, 
        dbo.T_News_Content.UserID, dbo.T_News_Content.TypeID, 
  dbo.T_News_Type.TypeName
FROM    dbo.T_News_Content left JOIN dbo.T_News_Type 
  ON dbo.T_News_Content.TypeID = dbo.T_News_Type.TypeID where 
'   +   @StrFilter
Exec ( @str )

如此一来只需要传入一个查询的条件就OK了 呵呵

在我的项目中生成查询条件的代码如下: 
 

    private   string  GetFilterString()
    
{
        
string str = " NewsID > 0 ";
        
if (ddlNewsType.SelectedIndex > 0)
        
{
            str 
+= "and (dbo.T_News_Content.TypeID = " + ddlNewsType.SelectedValue + " ) ";
        }

        
if (txtNewsTitle.Text.Trim() != "" && !string.IsNullOrEmpty(txtNewsTitle.Text))
            str 
+= "and NewsTitle like  '%%" + txtNewsTitle.Text.Trim() + "%%'" ;
        
if (txtInDate.Text.Trim() != "" && !string.IsNullOrEmpty(txtInDate.Text))
        
{
            
string strBegin = cldInDate.SelectedDate.ToShortDateString();
            
string strEnd = cldInDate.SelectedDate.AddDays(1).ToShortDateString();
            str 
+= "and InDate <  '" + strEnd + "";
            str 
+= "and InDate >  '" + strBegin + "";
        }

        str 
+= "and UserID = '" + Client.UserID + "'";
        
return str;
    }


Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=1716658

转载于:https://www.cnblogs.com/hongyuniu/archive/2007/07/31/837777.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值