我想实现这样的查询
比如在textbox控件里拷贝一个字符串“城市化进程中污染物的排放与时空分布特征”,假如我的数据库的数据表里有“城市化进程中污染物的”这样的字符串,而“排放与时空分布特征”我的数据表里没有,请问怎么实现将数据表里有的字符串写到listbox1控件里,将数据表里没有的字符串写到listbox2控件里

解决方案 »

  1.   

    分词技术?
    或者你可以试着用空格来区分关键词然后like %关键词1% or like %关键词2%
      

  2.   

    先用like查询数据库是否存在textbox的数据,
    然后用数据库的数据截去textbox的数据,就是listbox1值了(截去后的值判断是否为空)。
      

  3.   

    string a = "abcd";
    string b = "abcdefghhkhkjkhkh";
    string s = b.Replace(a, "");
    this.txtName.Text = s;
    给分
      

  4.   

    我的数据表里存的是一个专业词库,我就是想实现拷贝任何一段文字到textbox里,让程序从第一个字开始查,直到查到第N个字以后的数据表里没有这个词为止,比如查“城市化进程中污染物的排放与时空分布特征”,如果“城”有,就接着查“城市”,如果城市有就接着查“城市化”比如查到“城市化进”这个词没有,就把“城市化”写到listbox1控件里,把“进程中污染物的排放与时空分布特征”写到listbox2控件里,我可能前面没表述清楚,谢谢,请指教
      

  5.   

    是不是百度  google 搜索框得那种功能
      

  6.   

    不是,就是要先查第一个字,如果有,再查第一和第二个字组成的词,如果有就接着查第一第二和第三个字组成的词,依次类推,直到查到组合成的词数据库里没有然后开始写入listbox里
      

  7.   

    我觉得你的问题问得还不是很清楚,你要的分割是通过字符的长度分割(比如前10个字符存入List1,后面得存入List2)还是进行与数据表中的比较(相同的部分存入List1,剩余部分存入List2),这个问题应该不难,不知道你解决没有?
      

  8.   

    假设桌面上有以下五个控件:lable(表示读取数据库的字符串),button表示选择的按钮,textbox表示输入要搜索的文字,然后listbox两个点击button时,生成代码为(自己试验过了,可以用,呵呵):
     private void button1_Click(object sender, EventArgs e)
            {
                string totalstr = label1.Text;
                int wholelength = 0;
                //看搜索的字符串哪个长一些
                if (totalstr.Length <= textBox1.Text.Length)
                {
                    wholelength = totalstr.Length;                //具体两种情况:部分相同、包含
                    for (int x = 0; x < wholelength; x++)
                    {
                        if (textBox1.Text[x] == totalstr[x])
                        {
                            listBox1.Items.Clear();
                            listBox2.Items.Clear();
                            //解决包含问题(即数据库中为“12345”,textbox为“12”)
                            listBox1.Items.Add(totalstr.Substring(0, wholelength));
                            listBox2.Items.Add(totalstr.Substring(wholelength, totalstr.Length - wholelength));
                        }
                        else//只能结局部分相同问题(即数据库中为“12345”,textbox为“13332”)
                        {
                           listBox1.Items.Clear();
                           listBox2.Items.Clear();
                           listBox1.Items.Add(totalstr.Substring(0,x));
                           listBox2.Items.Add(totalstr.Substring(x,totalstr.Length-x));
                           break;
                        }
                       
                    }
                   
                }
                else
                {
                    wholelength = textBox1.Text.Length;
                    //具体两种情况:部分相同、包含
                    for (int x = 0; x < wholelength; x++)
                    {
                        if (textBox1.Text[x] == totalstr[x])
                        {
                            listBox1.Items.Clear();
                            listBox2.Items.Clear();
                            //解决包含问题(即数据库中为“12345”,textbox为“12”)
                            listBox1.Items.Add(totalstr.Substring(0, wholelength));
                            listBox2.Items.Add(totalstr.Substring(wholelength, totalstr.Length - wholelength));
                        }
                        else
                        {
                            listBox1.Items.Clear();
                            listBox2.Items.Clear();
                            listBox1.Items.Add(totalstr.Substring(0, x));
                            listBox2.Items.Add(totalstr.Substring(x, totalstr.Length - x));
                            break;
                        }
                       
                    }
                  
                }
            }
      

  9.   

    谢谢,11楼的兄弟,但是还是有个问题
    string totalstr = label1.Text; 
    这句代码,问题出在我怎么根据textbox中输入的文字查数据库呢,你比如我在textbox中输入“以水土流失、土地三化、大面积沙尘暴频发等为代表的生态环境退化对中国社会经济的可持续发展构成了严重的威胁”这句话,假如我的词库里有这些词
    以水土流失
    以水土流失、
    以水土流失、土地三化
    以水土流失、土地三化、大面积
    以水土流失、土地三化、大面积沙尘暴频发等
    ...
    不好查库呀,totalstr这个字符串就定不下来,不好比较了