在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1、简介
正则表达式学习网址: 正则表达式在线测试: 值得注意的是, 比如如下方式: mysql> select '我爱你中国' regexp '我爱你'; +------------------------------+ | '我爱你中国' regexp '我爱你' | +------------------------------+ | 1 | +------------------------------+ mysql> select '12306' regexp '[:digit:]'; +----------------------------+ | '12306' regexp '[:digit:]' | +----------------------------+ | 1 | +----------------------------+ 2、准备一张product表首先准备一张 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for product -- ---------------------------- DROP TABLE IF EXISTS `product`; CREATE TABLE `product` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `product_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '产品名称', `price` decimal(10, 2) UNSIGNED NOT NULL COMMENT '产品价格', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of product -- ---------------------------- INSERT INTO `product` VALUES (1, 'Apple iPhone 13 (A2634)', 6799.00); INSERT INTO `product` VALUES (2, 'HUAWEI P50 Pro', 6488.00); INSERT INTO `product` VALUES (3, 'MIX4', 4999.00); INSERT INTO `product` VALUES (4, 'OPPO Find X3', 3999.00); INSERT INTO `product` VALUES (5, 'vivo X70 Pro+', 5999.00); SET FOREIGN_KEY_CHECKS = 1; 初始数据如下所示: mysql> select * from product; +----+-------------------------+---------+ | id | product_name | price | +----+-------------------------+---------+ | 1 | Apple iPhone 13 (A2634) | 6799.00 | | 2 | HUAWEI P50 Pro | 6488.00 | | 3 | MIX4 | 4999.00 | | 4 | OPPO Find X3 | 3999.00 | | 5 | vivo X70 Pro+ | 5999.00 | +----+-------------------------+---------+ 2.1 语句顺序正则表达式的作用是文本匹配,使用一个正则表达式与一个文本内容进行比较,可以校验文本是否符合正则表达式阐述的规则。在
需求: 查询产品表中,产品名称中包含3的产品 语句: mysql> select * from product where product_name regexp '3'; 结果: +----+-------------------------+---------+ | id | product_name | price | +----+-------------------------+---------+ | 1 | Apple iPhone 13 (A2634) | 6799.00 | | 4 | OPPO Find X3 | 3999.00 | +----+-------------------------+---------+ 2.2 如何区分大小写
需求: 查询产品表中,产品名称包含huawei的产品 语句: mysql> select * from product where product_name regexp 'huawei'; 结果: +----+----------------+---------+ | id | product_name | price | +----+----------------+---------+ | 2 | HUAWEI P50 Pro | 6488.00 | +----+----------------+---------+ 此时查询结果默认不区分大小写,所以可以直接查询出来,如果我们希望查询区分大小写,此时只需要在 语句: mysql> select * from product where product_name regexp binary 'huawei'; 结果: Empty set (0.00 sec) 由于 2.3 正则表达式与like的区别相信有些小伙伴发现上面实现的功能,其实用like也能实现。很多场景下我们使用like来对字符串进行匹配,但是这些场景往往非常简单,而正则表达式是一个非常强大的文本检索过滤工具,它的所能实现的功能比like操作符强大太多啦。总之like能做的正则表达式都能做,正则表示能做的like基本上做不了(要么非常棘手)。 比如如下需求,使用正则表达式可以轻松实现,但是like操作符却不知道怎么实现了。 需求: 查询产品表中,产品名称中v至少出现一次产品信息 语句: mysql> select * from product where product_name regexp 'v+'; 结果: +----+---------------+---------+ | id | product_name | price | +----+---------------+---------+ | 5 | vivo X70 Pro+ | 5999.00 | +----+---------------+---------+
重复元字符
|
请发表评论