如何在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请在我的问题评论部分查看我的评论