我想执行一个基于“contacts”表和一列“partners”的查询。我给合伙人准备了这样的东西:

ID  Name     Partners
1 - Dupont - 3;8;14;11
2 - Duporc - 2;3;8;11
3 - Trobo - 1;2;5;8

例如,为了检索属于合作伙伴2的所有联系人,我想排列一个SQL查询。如何对“partners”列进行分解才能对SQL执行此操作?
SELECT * FROM contacts WHERE ... LIKE 2 ...??

最佳答案

使用REGEXP
可以使用正则表达式检查字符串中的给定数字。

SELECT * FROM contacts WHERE Partners REGEXP '[[:<:]]2[[:>:]]'

另一种方法是可以替换select查询中的分号,然后使用find in set
SELECT * FROM contacts WHERE FIND_IN_SET(2,REPLACE(Partners,";",","));

07-26 06:12