mysql concat实现简单多字段模糊查询
背景
之前对于模糊查询使用like,like只能对单字段进行检索,如果使用多字段,必须使用or拼接,这样的话索引就会失效。网上查询大家都使用concat可以进行多个字段检索。
concat
功能
将多个字符串连接成一个字符串
语法
CONCAT(str1, str2,…)
注意:返回值,由全体出入参数合并在一起而得到的字符串。只要输入的参数中有NULL值,就返回NULL。concat允许只有一个输入参数的情况。
代码实现
mysql单表多字段模糊查询可以通过下面这个sql查询实现
SELECT * FROM
magazine
WHERE CONCAT(title
,tag
,description
) LIKE ‘%关键字%’但是这样有个问题,如果这三个字段中有值为NULL,则返回的也是NULL,那么这一条记录可能就会被错过,怎么处理呢,我这边使用的是IFNULL进行判断,sql改为:
SELECT * FROM
magazine
WHERE CONCAT(IFNULL(title
,’’),IFNULL(tag
,’’),IFNULL(description
,’’)) LIKE ‘%关键字%’
还没有评论,来说两句吧...