当前位置 主页 > 技术大全 >

    mysql模糊查询,用于在字符串中匹配符合特定模式的数据

    栏目:技术大全 时间:2025-09-16 16:55


    在 MySQL 中,模糊查询主要通过LIKE关键字配合通配符实现,用于在字符串中匹配符合特定模式的数据。以下是详细用法:

    1. 常用通配符

    • %:匹配任意长度的字符串(包括 0 个字符)
    • _:匹配单个字符

    2. 基本语法

    sql
    SELECT 列名 FROM 表名 WHERE 列名 LIKE '模式';
    
     

    3. 常见使用场景

    (1)匹配以特定字符开头的数据

    sql
    -- 查找name以"张"开头的用户
    SELECT * FROM users WHERE name LIKE '张%';
    
     

    (2)匹配以特定字符结尾的数据

    sql
    -- 查找email以"@gmail.com"结尾的用户
    SELECT * FROM users WHERE email LIKE '%@gmail.com';
    
     

    (3)匹配包含特定字符的数据

    sql
    -- 查找address中包含"北京"的用户
    SELECT * FROM users WHERE address LIKE '%北京%';
    
     

    (4)匹配特定长度的字符

    sql
    -- 查找name是3个字符的用户(使用_通配符)
    SELECT * FROM users WHERE name LIKE '___';
    
    -- 查找phone以138开头且长度为11位的手机号
    SELECT * FROM users WHERE phone LIKE '138________';
    
     

    (5)转义特殊字符

    如果需要匹配包含%_的字符串,需要使用ESCAPE指定转义字符:

    sql
    -- 查找password中包含"a%b"的记录(使用#作为转义字符)
    SELECT * FROM users WHERE password LIKE 'a#%b' ESCAPE '#';
    
     

    4. 注意事项

    • 模糊查询在数据量较大时可能影响性能,尽量结合其他条件过滤
    • LIKE '%xxx'LIKE '%xxx%'会导致索引失效,LIKE 'xxx%'可以使用索引
    • 若需要更复杂的模式匹配,可以使用REGEXP正则表达式:
      sql
      -- 查找name以张、李、王开头的用户
      SELECT * FROM users WHERE name REGEXP '^[张李王]';
      
       

    根据实际需求选择合适的模糊查询方式,合理使用索引可以提高查询效率。
1分钟搞定MySQL部署!Docker最强实操指南,含所有常用命令和配置
忘记MySQL密码怎么办?别慌!用这一招跳过验证,轻松重置管理员权限
MySQL自增主键用完怎么办?从原理到实战,全面破解开发中的高频难题
MySQL权限混乱?这几个命令让你彻底理清用户清单与权限归属
你的数据库安全吗?读懂MySQL这几种日志,关键时刻能「救你一命」
MySQL性能上不去?八成是这里没配好!手把手教你搞定my.cnf核心配置
修改MySQL字段长度别乱来!这3个核心要点和1个致命陷阱,新手必看
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
你的MySQL数据库为什么总是又慢又卡?掌握这五大优化法则,查询速度快十倍!(上篇)
你的MySQL数据库为什么总是又慢又卡?掌握这五大优化法则,查询速度快十倍!(下篇)