MySQL多项模糊查询

最近有个需求,就是要根据搜索框里面的关键字,找到符合条件的数据。

如果是单个条件的话,其实就是一个普通的select语句。

但是需求是这个关键字,要在id,desc,step等多个字段模糊查找。

然后最直观的一个思路肯定就是:

select * from t_bug where `id` like  %key% or `desc` like %key%
or `step` like %key%

对一条记录,要对id、desc、step三项都判断一下符不符合key。

缺点:需求只有三个记录,如果是多个记录的话,那就效率会很慢,而且修改这个语句也很复杂。

一个更好的方法是,把需要模糊查询的各个字段,用concat拼接起来,成为一整个字符串,再用like来匹配。

SELECT * FROM t_bug WHERE  CONCAT(`desc`,`step_to_string`,`bug_id`) LIKE %key%

我在项目中就是这么做的,导师也认为没什么大问题:

各位有什么更好的方法,也可以交流一下哈。

时间: 2024-10-19 04:14:05

MySQL多项模糊查询的相关文章

mysql中的模糊查询

转载自:http://www.letuknowit.com/archives/90/ MySQL中实现模糊查询有2种方式:一是用LIKE/NOT LIKE,二是用REGEXP/NOT REGEXP(或RLIKE/NOT RLIKE,它们是同义词). 第一种是标准的SQL模式匹配.它有2种通配符:“_”和“%”.“_”匹配任意单个字符,而“%”匹配任意多个字符(包括0个).举例如下: SELECT * FROM table_name WHERE column_name LIKE ‘m%’; #查询

PHP MYSQL登陆和模糊查询

PHP MYSQL登陆和模糊查询 PHP版本 5.5.12    MYSQL版本 5.6.17  Apache 2.4.9 用的wampserver 一.PHPMYSQL实现登陆:  一共含有两个文件:login.php和logincheck.php; 表单代码: <form action="logincheck.php"method="post"> Yonghu:<inputtype="text" name="use

python中的mysql数据库like模糊查询

近期工作在使用python语言开发项目,工作中遇到了一个python连接mysql的like查询. 因为%在python中三个特殊的符号,如%s.%d分别代表了字符串占位符和数字占位符. 大家知道.mysql的模糊查询也须要用到%. 我们有一张test表,要对name字段进行模糊查询,预期的sql例如以下: select * from test where name like '%abc%'; 那么python中怎么写呢? sql = "select * from test where name

mysql进阶 六 模糊查询的四种用法介绍

mysql中模糊查询的四种用法介绍 这篇文章主要介绍了mysql中模糊查询的四种用法,需要的朋友可以参考下. 下面介绍mysql中模糊查询的四种用法: 1%: 表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] WHERE u_name LIKE '%三%' 将会把u_name为“张三”,“张猫三”.“三脚猫”,“唐三藏”等等有“三”的记录全找出来. 另外,如果需要找出u_name中既有“三”又有

MySql中like模糊查询%百分号之间使用变量值

条件::::表first(a:关键字),表later(b:含有关键字a的字段) 问题::::在表first中,a 作为表later中b查询条数的关键字,分别查出每个关键字a对应表later中b含有的条数? 如:a 含有 12,13,11 b 含有 145,124,135,125,111 查询结果:: a   count(b) 12 2 13 1 11 1 实现代码:: SELECT a,COUNT(b) FROM later,first WHERE b LIKE CONCAT('%',a,'%'

mysql全文索引之模糊查询

旧版的MySQL的全文索引只能用在MyISAM表格的char.varchar和text的字段上. 不过新版的MySQL5.6.24上InnoDB引擎也加入了全文索引,所以具体信息大家可以随时关注官网,下面我来谈谈mysql全文索引的用法,网上很多啦,我只讲讲我所了解滴部分哈:我的mysql版本是: 新建一张表test: CREATE TABLE `test` ( `name` char(12) NOT NULL DEFAULT '', `nickname` char(12) NOT NULL D

【mysql】 mysql 子查询、联合查询、模糊查询、排序、聚合函数、分组----------语法

第二章 mysql 一.模糊查询 like 1. 字段 like '河北省%' %代表任何N个字符 2 字段 like '河北省____' _代表任意1个字符 二.IN 语法:SELECT 字段列1,字段2 ,…FROM 表名 WHERE 字段x IN ( 值1,值2,值3…) 三.排序 语法:select 字段1, 字段2, ... from 表名 where 条件 order by 字段 [asc|desc] asc :升序 desc :降序 默认是升序asc SELECT * FROM s

Oracle多关键字模糊查询

以前写SQL时,知道MySQL多字段模糊查询可以使用[charlist] 通配符,如: SELECT * FROM Persons WHERE City LIKE '[ALN]%'但是在Oracle中使用这种方式进行查询时,却不能查询出结果可以使用以下几种方式进行多字段模糊查询: 方法1: select name from table1 where sdate = '2018/05/20' and substr(code,0,1) in ('1','2','3')方法2: -- 原文地址:htt

MySQL指定模糊查询范围 或 获取或者查询数据库字段的特定几位

SUBSTR 函数 正常的: select * from sky_user WHERE name LIKE "%name%" 现在我需要匹配name的前五位 select * from sky_user WHERE SUBSTR(name,1,5) LIKE "%name%" SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分.这个函数的名称在不同的资料库中不完全一样: MySQL: SUBSTR( ), SUBSTRING( ) Oracl