通配符的问题向大家请教!
使用多个字段查找!!采用模糊查找记录!
默认下显示所有记录,当用几个字段或一个字段(可以由用户选择)显示查找的记录!代码如下:
if(DGrade.SelectedValue.ToString().Trim()!="")
{
ViewState["strGrade"]=DGrade.SelectedValue.ToString();

}
else
{
ViewState["strGrade"]="%%%%%%%%%%%%%%"; } if(DSubject.SelectedValue.ToString().Trim()!="")
{
ViewState["strSubject"]=DSubject.SelectedValue.ToString();
}
else
{
ViewState["strSubject"]="%%%%%%%%%%"; } if(DColumn.SelectedValue.ToString().Trim()!="")
{
ViewState["strResColumn"]=DColumn.SelectedValue.ToString();
}
else
{
ViewState["strResColumn"]="%%%%%%%%%";
}
if(TTitle.ToString().Trim()!="")
{
ViewState["strTitle"]=TTitle.Text.ToString();
}
else
{
ViewState["strTitle"]="%%%%%%%%";
} if(TAuthor.ToString().Trim()!="")
{
ViewState["strAuthor"]=TAuthor.Text.ToString();
}
else
{
ViewState["strAuthor"]="%%%%%%%%%";
}问题是只能显示部分记录,当修改通配符%的个数时显示查找记录数目又不相同
请问是什么原因呢

解决方案 »

  1.   

    中间调用的Sql 的存储过程,测试过了存储过程没问题
      

  2.   

    在SQL中 % 是任务多个
        _ 是一个AC中   % 是任务多个
        * 是一个
      

  3.   

    CREATE PROCEDURE Res_Search
    @CurrentPage int,
    @PageSize int,
    @SGrade char (10)='%',
    @SSubject char (10)='%',
    @STitle varchar (255)='%',
    @SAuthor varchar (255)='%',
    @SResColumn char (20)='%',
    @TotalRecs int output
     ASCreate TABLE #TempTable
    (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [Taxis] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [Subject] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [Grade] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [ResColumn] [char] (20) COLLATE Chinese_PRC_CI_AS NULL ,
    [Title] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
    [Author] [varchar] (255) COLLATE Chinese_PRC_CI_AS NULL ,
    [Content] [ntext] COLLATE Chinese_PRC_CI_AS NULL ,
    [FImageName] [char] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [FResName] [char] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [FileSize] [char] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [FileType] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [Hits] [int] NULL ,
    [Datetime] [smalldatetime] NULL ,
    [Link] [char] (30) COLLATE Chinese_PRC_CI_AS NULL ,
    [Recommand] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [Pub] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
    [ReplyNo] [int] NULL ,
    [ReplyTime] [smalldatetime] NULL ,
    [IP] [char] (20) COLLATE Chinese_PRC_CI_AS NULL 
    )--Fil the temp table with the customers data
    INSERT INTO #TempTable
    (Taxis,Subject,Grade,ResColumn,Title,Author,Content,FImageName,FResName,FileSize,FileType,Hits,Datetime,Link,Recommand,Pub,ReplyNo,ReplyTime,IP)
    SELECT Taxis,Subject,Grade,ResColumn,Title,Author,Content,FImageName,FResName,FileSize,FileType,Hits,Datetime,Link,Recommand,Pub,ReplyNo,ReplyTime,IP
    FROM res where Grade like '%'+@SGrade+'%' and Subject like  '%'+@SSubject+ '%' and Title like '%'+@STitle+ '%' and Author like '%'+@SAuthor+'%' and ResColumn like '%'+@SResColumn+'%' order by ID desc DECLARE @FirstRec int,@LastRec int 
    SELECT  @FirstRec=(@CurrentPage-1)*@PageSize
    SELECT @LastRec=(@CurrentPage*@PageSize+1)
    SELECT Taxis,Subject,Grade,ResColumn,Title,Author,Content,FImageName,FResName,FileSize,FileType,Hits,Datetime,Link,Recommand,Pub,ReplyNo,ReplyTime,IP
    FROM #TempTable
    WHERE ID>@FirstRec AND ID<@LastRec 
    SELECT @TotalRecs=COUNT(*) FROM res  where Grade like '%'+@SGrade+'%' and Subject like  '%'+@SSubject+ '%' and Title like '%'+@STitle+ '%' and Author like '%'+@SAuthor+'%' and ResColumn like '%'+@SResColumn+'%'
    GO
      

  4.   

    @SGrade char (10)='%',
    @SSubject char (10)='%',
    @STitle varchar (255)='%',
    @SAuthor varchar (255)='%',
    @SResColumn char (20)='%',这里所有的char都改成varchar。char是定长的,如果长度不够的话,会在后面补空格。这样就会影响查询结果!
      

  5.   

    谢谢wzd24(牧野)(衣带渐宽终不悔,为伊消得人憔悴)
    搞定拉