需求表数据如下:
mysql> select * from test; +----+-------+ | id | name | +----+-------+ | 1 | abc** | +----+-------+ 1 row in set (0.00 sec)
我想匹配 abcde,也就是一个*代表一个字符
分析:
在正则中*代表0个或者多个,因此此处的存储有问题,应该存储.或者_那么查询sql可以通过like和REGEXP 来实现
结论:
1.采用like
mysql> select * from test where 'abcde' like replace(name,'*','_'); +----+-------+ | id | name | +----+-------+ | 1 | abc** | +----+-------+ 1 row in set (0.01 sec)
先替换成_然后在like 匹配
2.采用REGEXP
mysql> select * from test where 'abcde' regexp replace(name,'*','.'); +----+-------+ | id | name | +----+-------+ | 1 | abc** | +----+-------+ 1 row in set (0.02 sec)
替换成.然后在匹配