1. mysql
2.select VERSION() :5.6.50
3.数据库:
#数据库
-- `colove.xin`.test definition
CREATE TABLE `test` (
`id` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
#sql 数据
INSERT INTO `colove.xin`.test
(id, name)
VALUES('1', 'abcd');
INSERT INTO `colove.xin`.test
(id, name)
VALUES('2', 'abccd');
#sql
SELECT * from test where name REGEXP 'a*d'
SELECT * from test where name REGEXP 'ab*d'
SELECT * from test where name REGEXP 'ac*d'
4.问题:为啥第一个能查出数据 第二第三个不能查出数据
原因:用REGEXP 的时候 * 表示前面的所有字符重复零次或者多次
在具体一点:
'a*d' 表示a重复零次或者多次
'ab*d' 表示ab重复零次或者多次
'ac*d'表示ac重复零次或者多次
所以第一个能查出数据 第二第三个不能查出数据
这个和like有点不同,