本帖最后由 luckylansy 于 2013-04-26 01:51:00 编辑

解决方案 »

  1.   

    你这个问题复杂了,不是单纯sql能解决的,首先你的语句需要分词,分词就是个复杂的程序,分词之后相对简单一些,可以用 in子句在数据库中查询,总的来说这类似全文检索的应用,你可以参考一下倒排索引,
      

  2.   

    组合成多个Like语句或linq的Contain语句,不过这样效率不太高
    string []arry=new string[]{"中国","美国","日本","新加坡","中国人","美国人"};
    string strWhere=string.Empty;
    foreach(string s in arry)
     {
        if(strWhere.Length>0) strWhere += " OR ";
        strWhere += " 语句 LIKE '%" + s + "%'";
    }strSql="SELECT * FROM 表 where 1=1 AND ( " + strWhere + ")";
      

  3.   

    string[] strArr = new string[] { "中国", "美国", "日本", "新加坡", "中国人", "美国人" };
    string myStr = "中国人";
    for (int i = 0; i < strArr.Length; i++)
    {
        if (strArr[i].IndexOf(myStr) >= 0)
        {
            MessageBox.Show(strArr[i]);
        }
        else
        {
            if (myStr.IndexOf(strArr[i]) >= 0)
            {
                MessageBox.Show(strArr[i]);
            }
        }
    }
      

  4.   


    如果数组是几百个词组,而语句只有一句话,能有更高效的解决办法吗
    google 拼写检查算法。
    拼写检查是检查给出的文章中不在字典中的单词,而你的需求正好相反,是变形的拼写检查算法。