如何在mysql中过滤包含特定字母的数据?

如何在mysql中过滤包含特定字母的数据?,mysql,sql,mariadb,Mysql,Sql,Mariadb,我有一个表pub,它看起来像下表: +------------+----------------------------------+ | pub_id | pub_name | +------------+----------------------------------+ | P0010101 | Jex Max Publication | | P0020101 | BPP Publication

我有一个表
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.             |
+--------+--------------------------------------+
我想用
子句进行过滤,其中if在
pub_id
列中包含
P0
第一到第二个字母处,以及
0101
第三到第六个字母处

我试过:

SELECT pub_id, pub_name FROM pub WHERE LEFT(pub_id,2) = 'P0' and pub_id LIKE '%0101%'
但结果是这样的

+------------+----------------------------------+
| pub_id     | pub_name                         |
+------------+----------------------------------+
| P0010101   | Jex Max Publication              |
| P0020101   | BPP Publication                  |
| P0050101   | Mountain Publication             |
+--------+--------------------------------------+
我对结果的预期如下:

+------------+----------------------------------+
| pub_id     | pub_name                         |
+------------+----------------------------------+
| P0010101   | Jex Max Publication              |
+------------+----------------------------------+

您只需使用像“P00101%”这样的发布id即可。
。那么您就不需要
left()


为什么不能使用MID功能?我想你指的是字母,不是word@SirajK是的,我的意思是像那样,我忘记了……这不就是左(pub_id,6)=‘P00101’
?为什么把它分成两个不同的测试?考虑把P0与101分开存储吗?为什么在第二个版本中有<代码> < < /代码>?我有同样的问题。too@Barmar:因为我被这个例子弄糊涂了。你说得对,那是胡说八道。我更正了我的答案。@Gagantous:见上文。@stickybit请在我的问题评论部分查看我的评论