Mysql的instr()函数用法及说明

 更新时间:2026年01月04日 09:12:02   作者:TTc_  
mysql中instr()函数用于返回子字符串在字符串中第一次出现的位置,可以实现模糊查询,类似于like用法

Mysql的instr()函数用法

mysql的内置函数instr(filed,str)

作用是返回str子字符串在filed字符串的第一次出现的位置。

当instr(filed,str)=0时

表示子符串str不存在于字符串filed中,因此可以用来实现mysql中的模糊查询,与like用法类似。

如下:

 // 1、instr()函数,#{name}为参数
select id,name from test where instr(name,#{name})>0 

上述写法等同于下面
// 2、like
select id,name from test where name like concat('%',#{name},'%')

 instr(filed,str) > 0 ⇒ file like '%str%'
instr(filed,str) = 1 ⇒ file like  'str%'
instr(filed,str) = 0 ⇒ file not like  '%str%'

下面是一段mapper.xml的部分示例代码 

<select id="selectUserListByConds" parameterType="java.lang.String" resultMap="BaseResultMap">
        select
        a.userid,
        a.username,
        a.account,
        a.password,
        a.mobile,
        a.description,
        a.delete_flag,
        a.enabled,
        a.email,
        a.address,
        a.is_online,
        a.created_time,
        a.updated_time,
        a.created_user,
        a.updated_user,
        a.org_code,
        s.org_name,
        a.limit_ip,
        a.expiry_date,
        a.last_login_time,
        a.last_login_ip,
        a.account_type,
        a.account_type_name,
        a.tenant_id
        from s_user a
        left join s_department s on s.org_code=a.org_code and s.tenant_id=a.tenant_id
        where 1=1
        <if test="showdelete==null">
            and a.delete_flag!=1
        </if>
        <if test="account!=null and account!=''">
            and instr(a.account,#{account})>0
        </if>
        <if test ="username!=null and username!=''">
            and instr(a.username,#{username})>0
        </if>

        <if test="roleIds!=null and roleIds!=''">
            and exists(select * from s_user_role where user_id=a.userid and role_id = #{roleIds})
        </if>

        <if test="orgCode!=null and orgCode!=''">
            and instr(a.org_code,#{orgCode})>0
        </if>
        <if test="tenantId!=null and tenantId!=''">
            and a.tenant_id=#{tenantId}
        </if>
        order by a.created_time DESC
    </select>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • mysql授予用户远程访问权限的实现

    mysql授予用户远程访问权限的实现

    在默认情况下,MySQL 数据库仅允许在本地主机上进行访问,如果您需要远程连接到 MySQL 数据库,您需要授予用户远程访问权限,本文就来
    2023-11-11
  • MySQL检查和清理不可见字符的实现步骤

    MySQL检查和清理不可见字符的实现步骤

    在导入Excel表格到MySQL时,由于未进行数据清理,导致字段a出现了大量不可见字符的问题,这些字符包括空格、制表符、换行符和BOM头,下面就来介绍一下如何清理这些字符,感兴趣的可以了解一下
    2026-02-02
  • MySQL中的UTF-8与UTF8MB4:差异解析方式

    MySQL中的UTF-8与UTF8MB4:差异解析方式

    MySQL中UTF-8和UTF8MB4的区别在于编码范围、存储需求和兼容性,UTF-8可以表示大多数常见的字符,但对于一些罕见的字符和emoji表情等,可能无法正确表示,而UTF8MB4则可以表示几乎所有的Unicode字符,包括那些UTF-8无法表示的字符,在选择字符集时
    2024-12-12
  • MySQL 索引优化实战指南(从慢查询到高性能)

    MySQL 索引优化实战指南(从慢查询到高性能)

    本文详细讲解了MySQL索引的核心原理、创建原则、失效场景以及优化策略,通过SQL示例和执行计划分析,帮助开发者设计高效索引,提升查询性能,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • MySql忘记密码修改方式适应5.7以上版本

    MySql忘记密码修改方式适应5.7以上版本

    这篇文章主要介绍了MySql忘记密码修改方式适应5.7以上版本,需要的朋友可以参考下
    2017-06-06
  • mysql8.0.21下载安装详细教程

    mysql8.0.21下载安装详细教程

    这篇文章主要介绍了mysql8.0.21下载安装详细教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • MySQL优化之InnoDB优化

    MySQL优化之InnoDB优化

    InnoDB是为Mysql处理巨大数据量时的最大性能设计。它的CPU效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的。在数据量大的网站或是应用中Innodb是倍受青睐的。那么它就不需要优化了吗,答案很显然:当然不是!!!
    2017-03-03
  • 关于MySQL查询语句的优化详解

    关于MySQL查询语句的优化详解

    这篇文章主要介绍了MySQL查询语句的优化方法,分别介绍了子查询优化,分页查询优化以及排序查询优化,对学习有一定的帮助,需要的小伙伴可以参考一下
    2023-04-04
  • Mysql服务器的启动与停止(二)

    Mysql服务器的启动与停止(二)

    Mysql服务器的启动与停止(二)...
    2006-11-11
  • MySql分页时使用limit+order by会出现数据重复问题解决

    MySql分页时使用limit+order by会出现数据重复问题解决

    在MySQL中我们通常会采用limit来进行翻页查询,当limit遇到 order by的时候会出现数据重复问题,本文就来记录一下,感兴趣的可以了解一下
    2021-08-08

最新评论