我想执行一个基于“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,";",","));