MySQL REGEXP是MySQL数据库中用于正则表达式匹配的运算符,它允许在SQL查询中使用强大的正则表达式模式进行字符串匹配。与LIKE操作符相比,REGEXP提供了更灵活、更强大的文本匹配能力。
SELECT * FROM table_name WHERE column_name REGEXP 'pattern';
REGEXP运算符在WHERE子句中使用,后面跟着正则表达式模式。当列值与模式匹配时返回TRUE。
SELECT * FROM users WHERE phone REGEXP '^1[3-9][0-9]{9}$';
匹配中国大陆手机号码
SELECT * FROM products WHERE product_name REGEXP 'Pro|Max|Plus';
匹配包含Pro、Max或Plus的产品名称
SELECT * FROM emails WHERE email REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$';
验证电子邮件格式
| 特性 | REGEXP | LIKE |
|---|---|---|
| 匹配能力 | 支持完整正则表达式 | 仅支持简单通配符(%和_) |
| 性能 | 相对较慢 | 较快 |
| 大小写敏感 | 默认不敏感(可配置) | 取决于排序规则 |
A: 默认情况下,MySQL REGEXP不区分大小写。如需区分大小写,可使用REGEXP BINARY。
A: 使用双反斜杠(\\)进行转义,例如要匹配点号(.),应使用\\.
A: MySQL支持POSIX标准的扩展正则表达式(ERE),但不支持所有PCRE特性。