Excel VBA 基础(04.2) - 常用扩展库之RegExp (正则表达式)

这就是坑,别信Excel内置分列功能处理PDF数据。

实操提醒:使用正则表达式结合VBA解析PDF数据,提高效率。

如何在mysql中使用正则表达式REGEXP查询数据

上周,我在一个项目中用到MySQL的REGEXP操作符。
这玩意儿比LIKE操作符强大多了,能进行复杂的文本模式匹配。

比如,我要找名字以“J”开头的用户,写法是:
SELECT FROM users WHERE name REGEXP '^J';
或者大小写敏感的话,可以这样:
SELECT FROM users WHERE name REGEXP BINARY '^J';
再比如,我想要找到邮箱以“.com”结尾的记录,记得要转义点号:
SELECT FROM users WHERE email REGEXP '.com$';
有时候,我还得找名字中包含“ai”的用户,写法简单:
SELECT FROM users WHERE name REGEXP 'ai';
如果我要找名字是“John”或“Jane”的用户,就可以这样:
SELECT FROM users WHERE name REGEXP '^(John|Jane)$';
但是,如果我要排除某个模式,比如邮箱中不包含“gmail”,用NOT REGEXP会简单很多:
SELECT FROM users WHERE email NOT REGEXP 'gmail';
匹配数字或特定格式的时候,也很有用:
SELECT FROM users WHERE email REGEXP '[0-9 ]'; SELECT FROM users WHERE name REGEXP '^[0-9 ]+$';
记得转义特殊字符,还有性能优化也很重要,尤其是在大表查询时。
至于版本兼容性,要注意一些高级功能可能需要MySQL 8 .0以上版本。

总的来说,掌握REGEXP的符号后,能做很多事情,比如精确匹配、组合筛选、排除特定模式、控制大小写敏感。
但是,使用时要小心,特别是在高频查询中,复杂正则可能会影响性能。
我一般会用EXPLAIN分析查询性能,避免过度依赖复杂正则。
对了,我刚想到另一件事,有时候简单的LIKE也能满足需求,不必非得用REGEXP。
你看着办吧。