asp.net关键字模糊查询(类似于各大网站搜索功能)
今天与大家分享一个小算法,我是用C#写的,其他语言也一样换下语法就行了。以空格断开关键字模糊查询,类似于各大网站的搜索功能。我想的就是一个拼接sql语句的过程。都是以空格断开关键字,分两种情况,一种是以空格断开是”且”的关系,另一种是以空格断开是”或”的关系。其实也很简单,直接上代码吧。
关键字"或"的关系代码:
/// <summary> /// 关键字"或"的关系 /// </summary> /// <returns></returns> public string OrKeyWords() { string sql = "select username from usertable where 1=1"; string txtkeyword = txttitle.Text.Trim(); if (txtkeyword == "") { ClientScript.RegisterStartupScript(typeof(Page), "aa", "alert('请输入关键字!')", true); return; } else { int len = txtkeyword.Length; int n = 0; string strsql = " and ("; string strkey = ""; for (int i = 0; i < len; i++) { if (txtkeyword[i].ToString() == " ") { if (i > 0) { if (txtkeyword[i - 1].ToString() != " ") { n++; strsql += "charindex('" + strkey + "',username)>0 or "; strkey = ""; } } } else { strkey += txtkeyword[i].ToString(); } } if (n == 0) { sql += " and charindex('" + txtkeyword + "',username)>0 order by id desc"; } else { strsql += "charindex('" + strkey + "',username)>0)"; sql += "" + strsql + " order by id desc"; } //拼接完成 return sql; } }
关键字"且"的关系代码:
/// <summary> /// 关键字"且"的关系 /// </summary> /// <returns></returns> public string AndKeyWords() { string sql = "select username from usertable where 1=1"; string txtkeyword = txttitle.Text.Trim(); if (ttxtkeyword == "") { ClientScript.RegisterStartupScript(typeof(Page), "aa", "alert('请输入关键字!')", true); return; } else { int len = txtkeyword.Length; int n = 0; string strsql = " and "; string strkey = ""; for (int i = 0; i < len; i++) { if (txtkeyword[i].ToString() == " ") { if (i > 0) { if (txtkeyword[i - 1].ToString() != " ") { n++; strsql += "charindex('" + strkey + "',username)>0 and "; strkey = ""; } } } else { strkey += txtkeyword[i].ToString(); } } if (n == 0) { sql += " and charindex('" + txtkeyword + "',username)>0 order by id desc"; } else { strsql += "charindex('" + strkey + "',username)>0"; sql += "" + strsql + " order by id desc"; } //拼接完成 return sql; } }
代码很简单,就不解释了哈,我自己记录一下,也希望对大家有帮助。
PS:Tandy Tang祝大家写代码写的愉快!