首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

想做一个多字段的模糊查询,该怎么实现

2012-09-14 
想做一个多字段的模糊查询,该如何实现想做一个商品的模糊查询,一个商品有多个属性值,如类别,品牌,颜色,尺

想做一个多字段的模糊查询,该如何实现
想做一个商品的模糊查询,一个商品有多个属性值,如类别,品牌,颜色,尺寸,价格,功能说明等
现在用户只需在查询框中输入若干查询条件(没有顺序要求),系统就会到上面的这些属性中将所有条件查询一下
这个该如何实现,给点方法和建议
谢谢,分不多,全给了

[解决办法]
select * from 表名 where 类别 like ... and 品牌 like ......
[解决办法]
http://hi.baidu.com/anspider/blog/item/064ef01dabdf808c86d6b6e5.html
[解决办法]
string sql="select * from tb where 1=1";
sql+=条件?" and 字段 like '% %'":"";
[解决办法]
拼接字符串 判断条件是否添加
[解决办法]
select * from [商品] where 类别=isnull(@类别,类别) and 品牌=isnull(@品牌,品牌) 如此类推

select * from [商品] where 类别=case when @类别='' then 类别 else @类别 (后面接着其他条件)


都是一样道理。
[解决办法]
用or 一直or 下去试试
[解决办法]
拼写Sql语句,就能搞定
[解决办法]

探讨
select * from 表名 where 类别 like ... and 品牌 like ......

[解决办法]
探讨
引用:
select * from 表名 where 类别 like ... and 品牌 like ......

应该不是很难把
这个就可以 应该用AND不应该用OR

[解决办法]
我不知道 你说的“查询框中输入若干查询条件” 怎么输入??

一个文本框? 可以随便输入一个? 可以随便输入多个? 多个怎么区分?

就算输入一个 每个字段都要进行模糊查询吧 那样搜索起来效率非常慢 遍历每个字段都用like or再连接起来。。

再“若干个”?。。。。

建议你还是规范一下查询条件为好
[解决办法]
探讨
引用:
select * from 表名 where 类别 like ... and 品牌 like ......

应该不是很难把
这个就可以 应该用AND不应该用OR

[解决办法]
看看这个例子,应该够你用了。只要改改表名,及SQL连接字那
C# code
using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Xml.Linq;using System.Data.SqlClient;public partial class Default6 : System.Web.UI.Page{    protected void Page_Load(object sender, EventArgs e)    {      if (!IsPostBack)      {        string 表名 = "新闻表";        //查询[新闻表]中的指标SQL语句        string strSql = string.Format(@"select [name] from syscolumns where [id] in                                     (select [id] from sysobjects where [type]='U' and [name]='{0}')", 表名);        ddrList.DataSource = GetTable(strSql);//查询所有字段        ddrList.DataTextField = "name";        ddrList.DataValueField = "name";        ddrList.DataBind();        ddrList.Items.Insert(0, "全部"); //如果选择全部,则查询所有      }    }    protected void linkOK_Click(object sender, EventArgs e)    {      string strWhere = string.Empty;      if (ddrList.SelectedValue.Equals("全部"))     //如果选择  全部  所有指标查询      {        //and 条件          //for (int i = 1; i < ddrList.Items.Count; i++)         //i=1是去除[全部]这个指标        //{        //  strWhere += string.Format(@"  {0} like '%{1}%' and", ddrList.Items[i].Value, txtWhere.Text.Trim());   //拼接查询条件语句        //}                   //strWhere = strWhere.Substring(0, strWhere.Length - 3);    //去掉最后一个and        //or 条件        for (int i = 1; i < ddrList.Items.Count; i++)         //i=1是去除[全部]这个指标        {          strWhere += string.Format(@"  {0} like '%{1}%' or", ddrList.Items[i].Value, txtWhere.Text.Trim());   //拼接查询条件语句              }        strWhere = strWhere.Substring(0, strWhere.Length - 2);   //去掉最后一个or        strWhere = strWhere.Insert(0, "(").Insert(strWhere.Length, ")");//前后加上()      }      else      {        strWhere += string.Format(@" {0} like '%{1}%'", ddrList.SelectedValue, txtWhere.Text.Trim());//单项指标条件查询      }      string strSql = string.Format(@"select * from 新闻表 where 1=1 and {0} ", strWhere);    //完整SQL语句           gridTable.DataSource = GetTable(strSql);     gridTable.DataBind();    }     /// <summary>  /// 获取表中的所有指标  /// </summary>  /// <returns>ATable(所有指标)</returns>    protected DataTable GetTable(string strSql)    {      DataTable ATable = new DataTable();      //config中配置的连接字      string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["SqlConnection"].ConnectionString.ToString();      using (SqlConnection conn = new SqlConnection(connStr))      {        SqlDataAdapter sda = new SqlDataAdapter(strSql, conn);        try        {          sda.Fill(ATable);        }        catch (Exception ex)        {          throw new Exception("SqlError:" + strSql + "\r\n" + ex.Message);        }      }      return ATable;    }} 


[解决办法]
界面内容:
 

HTML code
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default6.aspx.cs" Inherits="Default6" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">    <title>无标题页</title></head><body>    <form id="form1" runat="server">    <div>    <table>      <tr><td>      <asp:DropDownList ID="ddrList" runat="server">      </asp:DropDownList></td>      <td>        <asp:TextBox ID="txtWhere" runat="server"></asp:TextBox>      </td>      <td>      <asp:LinkButton ID="linkOK" runat="server" onclick="linkOK_Click">搜索</asp:LinkButton></td></tr>      <tr>      <td colspan="3">        <asp:GridView ID="gridTable" Width="100%" runat="server">        </asp:GridView>        </td>      </tr>    </table>    </div>    </form></body></html> 

热点排行