MySQL中动态生成多条件查询语句

MySQL中动态生成多条件查询语句

分类: MySQL   2218人阅读  评论(2)  收藏  举报
mysql sql 产品 工作

        在做搜索页面时,我们经常会遇到多条件查询,且这些条件是不定的,也就是说当用户输入的条件参数为空时,该条件是不应该加到SQL语句中去的。举例来说,我们要对一个产品表product进行搜索,可能的条件是这样的:1、价格为100;2、产品名包含关键字p,写成条件就是WHERE price = 100 AND name LIKE '%p%',问题是这里的100和关键字p都是用户进行的选择或输入,当用户并没有选择或输入其中的一项时,该项的过滤条件也就不应当存在,这样我们在页面中就需要进行逻辑判断,当条件越多,if语句也就出现得越多,页面中就出现了大量的组合SQL语句的逻辑,这显然增加了写程序的工作量以及维护代码的难度。

        解决方案:将这类复杂的查询SQL语句(说它复杂,是因为需求多变,可能查询的字段不同,可能需要联合几个表进行查询,可能排序规则不同)先写成模板放入专门的SQL模板文件中,针对MySQL,上面提到的问题涉及到的SQL模板语句如下:SELECT * FROM product WHERE price = IF('{0}' = '', price, '{0}') AND name LIKE IF('{1}' = '', name, '%{1}%') 这里的price和name分别为产品表中的两个字段名,{}标志位是我们要将参数替换进去的地方,这样在查询页面只需调用SQL模板语句,并替换相应的参数即可。(假设用户没有过滤价格,则{0}为空,那么得到的SQL语句类似于:SELECT * FROM product WHERE price = price AND name LIKE 'p',其中price = price就起到了不进行过滤的作用,这样就达到了动态生成多条件查询语句的目的,页面中也就不需要进行繁琐的组合SQL语句的工作了)。

阅读(184) | 评论(0) | 转发(0) |
0

上一篇:主从服务器上的命令,及状态信息

下一篇:Linux 查看连接数命令

相关热门文章
  • MyBatis 入门(四)--链表查询...
  • MyBatis 入门(五)--分页查询(...
  • hive 连接客户端 SQuirrel SQ...
  • MyBatis 入门(五)--分页查询(...
  • QEMU源码分析系列(二)
  • python 多进程之管道实例(模...
  • 解决mysql“Access denied for...
  • MySQL数据插入、修改、删除...
  • mysql启动的四种方式
  • 【原创】PostgreSQL 实现MySQL...
  • linux dhcp peizhi roc
  • 关于Unix文件的软链接
  • 求教这个命令什么意思,我是新...
  • sed -e "/grep/d" 是什么意思...
  • 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议

你可能感兴趣的:(MySQL中动态生成多条件查询语句)