说明:
1、关键字包含:and,or,not。各自代表的意思不用我说吧。
2、搜索的字段为多个,先假设为:Field1,Field2,Field3。
3、关键字可以包含空格,这有两种情况:
   A、比如说输入“a b”,就是等于输入:“a and b”
   B、输入“"a b" c”,就是等于输入:“'a b' and c”希望做过这方面的帮帮忙,给出一个例子,或者给一个思路也行。如果是一个一个的判断,一个一个的组合SQL,这我倒是会写,但非常麻烦,因为还牵涉到字段的不定数(实际用的时候,字段要通过循环生成)。

解决方案 »

  1.   

    不太好弄,关键是你等设计中空格有两种意义,否则直接Replace就可以了。考虑用DFA吧。
      

  2.   

    Ivy_zheng(最后一只恐龙):你说的有道理。那就不考虑空格与引号,说说怎么做吧
      

  3.   

    看看分词系统吧,sql无能为力的。
      

  4.   

    可以把你输入的按照空格拆分,存进数组
    之后再进行搜索,我在asp里用过
      

  5.   

    zdyguilong(Keep Walking!) 我现在也是这样处理,但总感觉这样的处理方法,有问题。比如:Key="(a b) .not. c"时,这括号就很不好处理了。这是我的处理代码,谁能帮我改进一下:
    string[] ss = sKey.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            for (i = 0; i < ss.Length; i++)
            {
                s = ss[i].ToLower();
                switch (s)
                {
                    case ".and.":
                        sOp = " and ";
                        break;
                    case ".not.":
                        sOp = " and not ";
                        break;
                    case ".or.":
                        sOp = " or ";
                        break;
                    default:                    if (sOp == "")
                            sOp = " and ";
                        if (sSQL != "")
                            sSQL += sOp;
                        else
                            if (sOp == " and not ")
                                sSQL += " not ";
                        sOp = "";
                        sSQL += sField + " like '%" + s + "%'";
                        break;
                }
            }
      

  6.   

    sField =“(字段)”;
    我没有处理括号。我考虑最多的是处理速度,总觉得这样处理太慢了。
      

  7.   

    and or not 是用户输入的吗?一般的搜索引擎也就是关键词以空格隔开吧 这样的话就只有OR一种关系 这就OK了:)