如何在MySQL中筛选包含特定字符的数据?附pub表示例
在MySQL中筛选包含特定字符的数据
嗨,针对你提到的pub表,我来给你讲讲怎么在MySQL里筛选包含特定字符的数据,咱们结合你的表来举几个实用的例子~
先把你的pub表结构和数据整理成清晰的表格:
| pub_id | pub_name |
|---|---|
| P0010101 | Jex Max Publication |
| P0020101 | BPP Publication |
| H0030102 | New Harrold Publication |
| H0040101 | Ultra Press Inc. |
| P0050101 | Mountain Publication |
| P0060103 | Summer Night Publication |
| P0070104 | Pieterson Grp. of Publishers |
| P0080102 | Novel Publisher Ltd. |
核心方法:使用LIKE操作符
MySQL里最常用的筛选包含特定字符的方式就是LIKE操作符,配合通配符能实现不同的匹配需求:
1. 筛选包含指定字符串的记录
如果你想找出所有pub_name里包含Publication的记录,可以用%通配符(%表示匹配任意长度的任意字符,包括0个字符):
SELECT * FROM pub WHERE pub_name LIKE '%Publication%';
执行后会返回前6条记录,因为它们的pub_name都包含Publication。
2. 筛选以指定字符串开头的记录
比如你想找pub_id以P开头的出版社,把%放在匹配字符串后面即可:
SELECT * FROM pub WHERE pub_id LIKE 'P%';
这条语句会返回pub_id以P开头的6条记录。
3. 筛选以指定字符串结尾的记录
如果要找pub_name以Ltd.结尾的出版社,把%放在匹配字符串前面:
SELECT * FROM pub WHERE pub_name LIKE '%Ltd.';
这条语句只会返回最后一条Novel Publisher Ltd.的记录。
4. 区分大小写的筛选
MySQL默认的LIKE不区分大小写,如果需要严格区分,可以加上BINARY关键字:
比如你想找pub_name里包含小写publication的记录(你的表中都是大写开头,所以这条语句不会返回结果):
SELECT * FROM pub WHERE BINARY pub_name LIKE '%publication%';
补充:用REGEXP实现复杂匹配
如果你的匹配需求更灵活(比如同时匹配多个关键词),可以用REGEXP(或RLIKE)操作符,比如找pub_name包含Publication或者Publishers的记录:
SELECT * FROM pub WHERE pub_name REGEXP 'Publication|Publishers';
这条语句会返回除了Ultra Press Inc.之外的所有记录。
内容的提问来源于stack exchange,提问作者Gagantous
相关产品推荐
相关产品推荐

