mysql数据库中contains怎么用

mysql数据库中contains怎么用,第1张

我们通常在 WHERE 子句中使用 CONTAINS ,就象这样:SELECT * FROM table_name WHERE CONTAINS(fullText_column,'search contents')。 我们通过例子来学习,假设有表 students,其中的 address 是全文本检索的列。1. 查询住址在北京的学生SELECT student_id,student_nameFROM studentsWHERE CONTAINS( address, 'beijing' )remark: beijing是一个单词,要用单引号括起来。 2. 查询住址在河北省的学生SELECT student_id,student_nameFROM studentsWHERE CONTAINS( address, '"HEIBEI province"' )remark: HEBEI province是一个词组,在单引号里还要用双引号括起来。3. 查询住址在河北省或北京的学生SELECT student_id,student_nameFROM studentsWHERE CONTAINS( address, '"HEIBEI province" OR beijing' )remark: 可以指定逻辑 *** 作符(包括 AND ,AND NOT,OR )。4. 查询有 '南京路' 字样的地址SELECT student_id,student_nameFROM studentsWHERE CONTAINS( address, 'nanjing NEAR road' )remark: 上面的查询将返回包含 'nanjing road','nanjing east road','nanjing west road' 等字样的地址。A NEAR B,就表示条件: A 靠近 B。 5. 查询以 '湖' 开头的地址SELECT student_id,student_nameFROM studentsWHERE CONTAINS( address, '"hu*"' )remark: 上面的查询将返回包含 'hubei','hunan' 等字样的地址。记住是 *,不是 %。6. 类似加权的查询SELECT student_id,student_nameFROM studentsWHERE CONTAINS( address, 'ISABOUT (city weight (.8), county wright (.4))' )remark: ISABOUT 是这种查询的关键字,weight 指定了一个介于 0~1之间的数,类似系数(我的理解)。表示不同条件有不同的侧重。7. 单词的多态查询SELECT student_id,student_nameFROM studentsWHERE CONTAINS( address, 'FORMSOF (INFLECTIONAL,street)' )remark: 查询将返回包含 'street','streets'等字样的地址。对于动词将返回它的不同的时态,如:dry,将返回 dry,dried,drying 等等。以上例子都使用英文,不使用中文是因为有的查询方式中文不支持

给你一个稍微复杂一点的查询,我设计的

看上图我把第一列标签后面的控件命名有规律,比如计划工厂后面文本框是"计划工厂t",Exapt命名为"计划工厂c",后面还隐藏一个listbox,命名为"计划工厂l"。

计划工厂  这个名称本身就是我要查询的表里面包含的字段。

利用这种界面,我要完成一些复杂点的查询:点文本框里的小图标按钮,d出工具,可以输入多条件,条件可以成立为模糊条件(用*代替不认识部分),也可以成立为否决条件。

选中Exapt全部否定所成立条件;点击执行按钮,有条件的成立条件,无条件的不成立。

所以这种东西贯穿软件我就不能每个都去做,就只能写一个类文件:

    public class conditionset

    {

        public void load_condit(Panel p)

        {

            foreach (Control ctl in p.Controls)

            {

                if (ctl is SkinTextBox)

                {

                    SkinTextBox sktxt = (SkinTextBox)p.Controls[ctl.Name]

                    ListBox list = (ListBox)p.Controls[sktxt.Name.Substring(0, sktxt.Name.Length - 1) + "l"]

                    sktxt.IconClick += (Object sen, EventArgs ed) =>

                    {

                        ctl.condition toolform = new ctl.condition()

                        if (list.Items.Count > 0)

                        {

                            sktxt.Text = "┅"

                            sktxt.ReadOnly = true

                        }

                        foreach (var sm in list.Items)

                        {

                            toolform.dv.Rows.Add(sm.ToString())

                        }

                        toolform.Show()

                        toolform.cleari += (Object send, EventArgs er) =>

                         {

                             sktxt.Text = ""

                             sktxt.ReadOnly = false

                         }

                        toolform.subm += (Object send, EventArgs er) =>

                        {

                            list.Items.Clear()

                            foreach (DataGridViewRow dvr in toolform.dv.Rows)

                            {

                                if (Convert.ToString(dvr.Cells[0].Value) != "")

                                {

                                    list.Items.Add(Convert.ToString(dvr.Cells[0].Value))

                                }

                            }

                            sktxt.Text = "┅"

                            sktxt.ReadOnly = true

                        }

                    }

                }

            }

        }

        public string condit(Panel p)

        {

            string master_condition = ""

            foreach (Control ctl in p.Controls)

            {

                //遍历panel查找条件

                #region 

                string condition = ""

                if (ctl is SkinTextBox)

                {

                    //文本框条件组合

                    #region

                    SkinTextBox sktxt = (SkinTextBox)p.Controls[ctl.Name]

                    string ziduan_name = sktxt.Name.Substring(0, sktxt.Name.Length - 1)

                    SkinCheckBox skck = (SkinCheckBox)p.Controls[ctl.Name.Substring(0, ctl.Name.Length - 1) + "c"]

                    ListBox list = (ListBox)p.Controls[ctl.Name.Substring(0, ctl.Name.Length - 1) + "l"]

                    if (sktxt.Text != "")

                    {

                        if (sktxt.Text == "┅")

                        {

                            string blur_str = "", blur = ""

                            foreach (var itm in list.Items)

                            {

                                if (itm.ToString().Contains("*"))

                                {

                                    if (skck.Checked == true)

                                    {

                                        blur += " and " + ziduan_name + " not like '" + itm.ToString().Replace("*", "%") + "'"

                                    }

                                    else

                                    {

                                        blur += " or " + ziduan_name + " like '" + itm.ToString().Replace("*", "%") + "'"

                                    }

                                }

                                else

                                {

                                    blur_str += "'" + Convert.ToString(itm) + "',"

                                }

                            }

                            string blur_sql = (blur == "") ? "" : blur.Substring(4, blur.Length - 4).Trim()

                            string in_condition = "", like_condition = ""

                            if (skck.Checked == true)

                            {

                                in_condition = ziduan_name + " not in "

                                like_condition = " and "

                            }

                            else

                            {

                                in_condition = ziduan_name + " in "

                                like_condition = " or "

                            }

                            string contains_sql = (blur_str == "") ? "" : in_condition + "(" + blur_str.Substring(0, blur_str.Length - 1) + ")"

                            condition = contains_sql + blur_sql

                            if (blur_sql != "" && contains_sql != "")

                            {

                                condition = contains_sql + like_condition + blur_sql

                            }

                            else

                            {

                                condition = contains_sql + blur_sql

                            }

                        }

                        else

                        {

                            if (!sktxt.Text.Contains("*"))

                            {

                                if (skck.Checked == true)

                                {

                                    condition = ziduan_name + "<>'" + sktxt.Text + "'"

                                }

                                else

                                {

                                    condition = ziduan_name + "='" + sktxt.Text + "'"

                                }

                            }

                            else

                            {

                                if (skck.Checked == true)

                                {

                                    condition = ziduan_name + " not like '" + sktxt.Text.Replace("*", "%") + "'"

                                }

                                else

                                {

                                    condition = ziduan_name + " like '" + sktxt.Text.Replace("*", "%") + "'"

                                }

                            }

                        }

                    }

                    #endregion

                }

                if (ctl is SkinDateTimePicker)

                {

                    //日期条件组合

                    #region

                    if (ctl.Name.Substring(ctl.Name.Length - 1, 1) != "t")

                    {

                        SkinDateTimePicker skdate_sta = (SkinDateTimePicker)p.Controls[ctl.Name]

                        SkinDateTimePicker skdate_end = (SkinDateTimePicker)p.Controls[ctl.Name + "t"]

                        if (skdate_sta.text != "")

                        {

                            if (skdate_end.text == "")

                            {

                                condition = skdate_sta.Name + "='" + skdate_sta.text + "'"

                            }

                            else

                            {

                                condition = skdate_sta.Name + ">='" + skdate_sta.text + "' and " + skdate_sta.Name + "<='" + skdate_end.text + "'"

                            }

                        }

                    }

                    #endregion

                }

                master_condition += (condition == "") ? "" : "(" + condition + ") and "

                #endregion //遍历panel查找条件

            }

            string condition_sql = (master_condition == "") ? "" : master_condition.Substring(0, master_condition.Length - 5)

            return condition_sql

        }

    }

工具用一个窗体代替:

    public partial class condition : Form

    {

        public condition()

        {

            InitializeComponent()

        }

        public event EventHandler subm

        public event EventHandler cleari

        private void submit_Click(object sender, EventArgs e)

        {

            subm(sender, e)

            this.Dispose()

        }

        private void clearit_Click(object sender, EventArgs e)

        {

            this.Dispose()

            dv.Rows.Clear()

            cleari(sender, e)

        }

    }

当我们执行多条件的时候就等于拼接条件

好多错误,第一函数要定义返回类型,第二函数内部每行结束要用;标注,第三定义变量如果用declare 变量名前不用加@,第四sql传递变量用select into,第五没有必要的注释直接删掉好了,第六简单的查询直接用SQL


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/8678956.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-19
下一篇2023-04-19

发表评论

登录后才能评论

评论列表(0条)

    保存