asp.net关键字模糊查询(类似于各大网站搜索功能)

摘要:
今天我想和大家分享一个小算法。我用C#编写,其他语言也可以更改语法。用空格分隔的关键词的模糊查询类似于主要网站的搜索功能。我想要的是拼接SQL语句的过程。事实上,这也很简单。直接转到code=“”){n++;strsql+=“charindex˃0或”;strkey=“”;}}否则{strkey+=txtkeyword[i].ToString();}}如果{sql+=“andcharindex˃0orderbyiddesc”;}否则{strsql+=“charindex˃0)”;sql+=”“+strsql+”orderbyiddesc“;}//拼接完成returnsql;}}关键字“And”的关系代码://///////关键字“And”的关系//////publicstringAndKeyWords(){stringsql=“selectusernamefromtusertablewhere1=1”;stringxtkeyword=txttitle.Text.Trim();如果{ClientScript.RegisterStartupScript(typeof(Page),“aa”,“alert('请输入关键字!

  今天与大家分享一个小算法,我是用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祝大家写代码写的愉快!

免责声明:文章转载自《asp.net关键字模糊查询(类似于各大网站搜索功能)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇.NetCore,WebApi简易开发框架搭建Windows下后台服务程序启动前台可交互界面程序下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Perl模式匹配

       Perl 内置的模式匹配让你能够简便高效地搜索大量的数据。不管你是在一个巨型的商业门户站点上用于扫描每日感兴趣的珍闻报道,还是在一个政府组织里用于精确地描述人口统计(或者人类基因组图),或是在一个教育组织里用于在你的 web 站点上生成一些动态信息,Perl 都是你可选的工具。这里的一部分原因是 Perl 的数据库联接能力,但是更重要的原因是...

Log4net配置

一 AssemblyInfo.cs文件 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 二 创建log4net.config文件 <?xml version="1.0" encoding="utf-8" ?>&...

mybatis传入多个参数

需要查阅本文的基本都是需要传入多个参数的,这里记住一句话:无论你传的参数是什么样的,最后mybtis都会将你传入的转换为map的,那么既然这样,当我们要传入多个参数时,何不直接给与map类型即可,然后mapper.xml通过#{map.key}来获取值即可,这个特别适合动态搜索,或者多个参数的查询,并且可以在mapper的xml语句中通过if判断来实现若为...

IOS开发之__bridge,__bridge_transfer和__bridge_retained (转)

Core Foundation 框架Core Foundation框架 (CoreFoundation.framework) 是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能。下面列举该框架支持进行管理的数据以及可提供的服务: 群体数据类型 (数组、集合等)程序包字符串管理日期和时间管理原始数据块管理偏好管理URL及数据流操作线程和RunL...

Pike学习笔记

  Pike的安装(Ubuntu环境)    pike的语法非常像C++,但是它也是脚本语言,所以具有一般脚本语言的特性。一个简单的pike程序,hello world: 1 int main() 2 { 3 write("Hello world! "); 4 return 0; 5 }    string的用法,及命令行参数的例子: #!...

Java多次启动相同jar程序

背景现在很多软件都支持集群部署,但是测试环境通常资源有限,所以一般通过单台机器模拟集群部署(使用不同端口,运行相同jar包),本文的目的就是通过多种方式实现此需求。 两个程序1、jar程序   ① springboot程序   ② 只包含一个main方法,用于启动程序,输出进程ID   ③ 路径:C:/demo.jar(windows) /demo.jar...