mysql通配符能和函数一起用吗_mysql通配符与mysql函数结合使用的方法

来源:这里教程网 时间:2026-02-28 20:28:22 作者:

MySQL中的通配符通常用于LIKE或NOT LIKE操作中,用来匹配字符串中的特定模式。常见的通配符有%(匹配任意数量字符,包括零个字符)和_(匹配单个字符)。这些通配符可以与MySQL的字符串函数结合使用,实现更灵活的数据查询和处理。

使用CONCAT函数拼接通配符

在实际查询中,如果需要动态构造包含通配符的匹配条件,可以使用CONCAT()函数将通配符与字段值或其他字符串连接起来。

例如,查找用户名以“张”开头的所有记录:

SELECT * FROM users WHERE name LIKE CONCAT('张', '%');

也可以在结尾添加通配符:

SELECT * FROM users WHERE name LIKE CONCAT('%', '伟'); —— 匹配以“伟”结尾的名字

甚至可以在前后都加通配符:

SELECT * FROM users WHERE name LIKE CONCAT('%', '明', '%'); —— 包含“明”的名字

在REPLACE或SUBSTRING等函数中配合使用

虽然通配符不能直接在REPLACE()SUBSTRING()等函数内部作为参数进行模式匹配,但可以通过先用LIKE筛选出目标数据,再对结果使用这些函数处理。

比如,先查出邮箱包含“@gmail”的用户,再替换域名:

UPDATE users SET email = REPLACE(email, '@gmail.com', '@example.com') WHERE email LIKE '%@gmail.com%';

或者提取部分字符串后再做模糊匹配:

SELECT * FROM users WHERE SUBSTRING(phone, 1, 3) LIKE '13_'; —— 匹配手机号前三位为13x的用户

结合LOWER/UPPER函数实现不区分大小写的匹配

有时候需要忽略大小写进行模糊查询,可以将字段值先通过LOWER()UPPER()转换,再与带通配符的字符串比较。

例如,查找名称中包含“admin”的记录,不区分大小写:

SELECT * FROM roles WHERE LOWER(role_name) LIKE '%admin%';

这样即使数据是“Admin”、“ADMIN”也能被正确匹配。

基本上就这些常见用法。MySQL不允许在普通字符串函数中直接使用正则式通配符,但在LIKE语句中结合函数构造动态模式是完全支持的。关键是要理解:通配符起作用的地方是LIKE操作,而函数是用来准备或处理这些操作的输入或输出。合理组合能大幅提升查询灵活性。

相关推荐