我是靠谱客的博主 热心蜜粉,最近开发中收集的这篇文章主要介绍mysql模糊查询站位_mysql精准模糊查询使用CONCAT加占位符(下划线“_”)的使用,直接限定了长度和格式...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

比如现在有张表t_user,如下:(表中只是引用某某某的话,并无恶意)

id

name

1

司马懿

2

司马老贼

3

司马老贼OR司马懿

4

司马大叔

1.模糊查询一般用的模糊查询都是like关键词,然后再在要查的字段中用百分号“%”来查询自己想要的结果。对于上面数据,加入想查询“司马”开头的人

select * from t_user where name “司马%”;

这样查询的结果是把表中所有的数据都会查询出来。

但是,我现在需要查询以司马复姓并且名字中有1个或者两个(或者N个)的名字,显然用上面的sql是无法查询到的。

这样需要用到本篇文章要讲到的地方。用CONCAT和占位符“_”来实现。

2.在讲之前先来看下如果直接select concat的拼接会是什么样的结果

select concat("司马",“_”);###一个“_”   ===============》司马_

select concat("司马",“__”,);###两个“_”   ===============》司马__

select concat("司马",“__”,"OR”);###一个“_”   ===============》司马__OR

可以看出,如果直接把concat的拼接当做结果查询的话,不会有任何效果,跟正常的使用concat是一样的。

所以,重要的事情要说3遍:大家不要被这里误导。大家不要被这里误导。大家不要被这里误导。

3.模糊查询中使用CONCAT和占位符“_”来精确匹配几个占位的数据(直接限定了要查数据的长度和格式)。几个下划线就是几个占位。

比如上面说的我们要查司马姓氏且名字只有一个字的人的话,我们可以用

select * from t_user where name like concat("司马","_");##一个下划线

这样我们就只能查到id为1的那条数据,而查不到其余的数据。

同理,要查司马复姓切名字有俩字的人:

select * from t_user where name like concat("司马","__");  ###俩下划线

这样我们就可以查到id为2和4的数据,而查不到其余的数据。

上面两个例子说明了此种方法是限定长度的

我们还可以做个延伸:

但是

select * from t_user where name like concat("司马","__",“OR”);##两个下划线

这样的查询是查不到任何数据的。

可是如果我们在修改成

select * from t_user where name like concat("司马","__",“OR”,"__");##前后两部分均有两个下划线,

这样我们就可以查询到id为3的数据。

所以可以看出此种方法是限定格式的

这样就达到了我们想要的“精准模糊查询”的目的

以上就是本文要说的事情,不喜勿喷。

---------------------

作者:bebmwnz

来源:CSDN

原文:https://blog.csdn.net/bebmwnz/article/details/89963996

版权声明:本文为博主原创文章,转载请附上博文链接!

原文:https://www.cnblogs.com/pztc/p/10836060.html

最后

以上就是热心蜜粉为你收集整理的mysql模糊查询站位_mysql精准模糊查询使用CONCAT加占位符(下划线“_”)的使用,直接限定了长度和格式...的全部内容,希望文章能够帮你解决mysql模糊查询站位_mysql精准模糊查询使用CONCAT加占位符(下划线“_”)的使用,直接限定了长度和格式...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(30)

评论列表共有 0 条评论

立即
投稿
返回
顶部