欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

字符串匹配查询

发布时间:2025/6/15 编程问答 23 豆豆
生活随笔 收集整理的这篇文章主要介绍了 字符串匹配查询 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

          mysql中数据有两个运算符来提供字符字符串查询匹配的,分别是like和regexp,下面来看一下。

mysql> select * from tmp; +------+----------+ | id | name | +------+----------+ | 2 | lisi | | 1 | zhangsan | | 3 | NULL | +------+----------+ 3 rows in set (0.00 sec)

对于like,'%'匹配任何数目的字符,甚至包括0字符,'_'只能匹配一个字符。

mysql> select * from tmp where name like 'li'; Empty set (0.00 sec)

直接匹配,不适用匹配符这样会失败。

mysql> select * from tmp where name like 'l%'; +------+------+ | id | name | +------+------+ | 2 | lisi | +------+------+ 1 row in set (0.00 sec)mysql> select * from tmp where name like 'lis%'; +------+------+ | id | name | +------+------+ | 2 | lisi | +------+------+ 1 row in set (0.00 sec)mysql> select * from tmp where name like 'z%'; +------+----------+ | id | name | +------+----------+ | 1 | zhangsan | +------+----------+ 1 row in set (0.00 sec)mysql>

%匹配任意数目的字符。

mysql> select * from tmp where name like 'lis_'; +------+------+ | id | name | +------+------+ | 2 | lisi | +------+------+ 1 row in set (0.00 sec)mysql> select * from tmp where name like 'li_'; Empty set (0.00 sec)mysql>

'_'只能匹配一个字符。

对于regexp运算符,先看看不带任何匹配符的情况。

mysql> select * from tmp where name regexp 'li'; +------+------+ | id | name | +------+------+ | 2 | lisi | +------+------+ 1 row in set (0.00 sec)mysql> select * from tmp where name regexp 'zh'; +------+----------+ | id | name | +------+----------+ | 1 | zhangsan | +------+----------+ 1 row in set (0.00 sec)

也是可以进行匹配的,这和like运算符不一样。regexp有一些通配符来提供匹配的,类似于正则表达式。

'^'匹配以该字符后面的字符开头的字符串。

mysql> select * from tmp where name regexp '^z'; +------+----------+ | id | name | +------+----------+ | 1 | zhangsan | +------+----------+ 1 row in set (0.00 sec)mysql> select * from tmp where name regexp '^w'; Empty set (0.00 sec)

'$'匹配以该字符后面的字符结尾的字符串。

mysql> select * from tmp where name regexp 'i$'; +------+------+ | id | name | +------+------+ | 2 | lisi | +------+------+ 1 row in set (0.00 sec)

注意'^'和'$'的位置放置。

'.'用来匹配任何一个字符,因为regexp本身就有匹配的字符的能力,我觉得这个有点像鸡肋了。

'[...]'用来匹配里面的任何字符。

mysql> select * from tmp where name regexp '[lz]'; +------+----------+ | id | name | +------+----------+ | 2 | lisi | | 1 | zhangsan | +------+----------+ 2 rows in set (0.00 sec)

'*'匹配0个或多个在它前面的字符,0个也行,那不是匹配所有,即所以的记录都行。

mysql> select * from tmp where name regexp '0*'; +------+----------+ | id | name | +------+----------+ | 2 | lisi | | 1 | zhangsan | +------+----------+ 2 rows in set (0.00 sec)mysql> pipei

结果一目了然。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

总结

以上是生活随笔为你收集整理的字符串匹配查询的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。