mysql准确查询出以固定字符开头的数据

157 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

我们在做开发过程中,可能经常会遇到多种支付方式,或者多种业务的模式

为了区分,我们可能会根据订单的前两位或者前几位固定值来区分,从而看出他是属于哪个支付或者业务。

因为业务的处理肯定都是不同的,例如增加积分,给哪些表里的哪些数据进行更新等。

这里我就以前两位作为例子,我们如何根据前两位来进行匹配呢?

方法有很多,在这里,我推荐三种匹配方法给到大家:

  1. 第一种是使用LEFT函数,函数使用方法介绍和使用如下:

LEFT(str,length);

注释:str是原串字段,length是要提取的长度(这里只能是正整数),该函数是从字符串左边开始进行匹配,返回填写的对应长度

实际使用:

    mysql> SELECT LEFT('16012151311611231', 2);
    +------------------------------+
    | LEFT('16012151311611231', 2) |
    +------------------------------+
    | 16                           |
    +------------------------------+
    1 row in set
    
  1. 第二种就是使用SUBSTRING函数,这个和程序上有所不同,程序是从0开始计数,但是这个函数使用是从1开始(千万不要记错哦)

SUBSTRING(str,position,len)

str是原串字段,position是一个定位,要从第几位开始就写几,len是要提取的长度,下面是从第一位开始取两位的实际使用例子

实际使用:


	mysql> SELECT SUBSTRING('16012151311611231', 1, 2);
	+--------------------------------------+
	| SUBSTRING('16012151311611231', 1, 2) |
	+--------------------------------------+
	| 16                                   |
	+--------------------------------------+
	1 row in set
	
  1. 第三种是直接使用like查询,这个应该很多人都很熟悉了吧?没错,就是模糊查询,使用有模糊查询,可以在字段上加上索引,加快数据匹配

实际使用:

	mysql> SELECT * from tableName where '16012151311611231' like '16%';
	+--------------------------------------+
	| 16012151311611231                    |
	+--------------------------------------+
	1 row in set
	

以上就是为大家推荐的三种匹配方法,更多技术问题,后期会持续分享,大家记得关注哈

微信公众号:倒腾怪,期待你的关注