Php 分解列以执行SQL搜索查询

Php 分解列以执行SQL搜索查询,php,mysql,sql,Php,Mysql,Sql,我想基于列为“partners”的“contacts”表执行查询。我有过这样的合作伙伴: ID Name Partners 1 - Dupont - 3;8;14;11 2 - Duporc - 2;3;8;11 3 - Trobo - 1;2;5;8 例如,为了检索属于partner 2的所有联系人,我想形成一个SQL查询。如何分解“合作伙伴”列以使用SQL实现这一点 SELECT * FROM contacts WHERE ... LIKE 2 ...?? 使用REGEX

我想基于列为“partners”的“contacts”表执行查询。我有过这样的合作伙伴:

ID  Name     Partners
1 - Dupont - 3;8;14;11 
2 - Duporc - 2;3;8;11 
3 - Trobo - 1;2;5;8 
例如,为了检索属于partner 2的所有联系人,我想形成一个SQL查询。如何分解“合作伙伴”列以使用SQL实现这一点

SELECT * FROM contacts WHERE ... LIKE 2 ...??

使用
REGEXP

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

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

使用
REGEXP

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

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

您可以使用查找集合中的函数

SELECT * FROM table WHERE FIND_IN_SET(3, Partners);

               OR

SELECT * FROM table
WHERE CONCAT(';', Partners, ';') LIKE '%,3,%'

我希望它有用

您可以使用在集合中查找函数

SELECT * FROM table WHERE FIND_IN_SET(3, Partners);

               OR

SELECT * FROM table
WHERE CONCAT(';', Partners, ';') LIKE '%,3,%'

我希望它有用

不要像这样“储存”合作伙伴您应该使用一个连接表,比如说
ContactPartners
,每个联系人和合作伙伴有一行。感谢结构升级,但我现在不能这样做。我必须处理这种强加的结构。有任何SQL函数可以拆分或分解此partners列吗?您可以在分号上分解,然后用逗号内爆,并在查询中使用
WHERE col IN()
子句。不要像这样“存储”合作伙伴您应该使用连接表,例如
ContactPartners
,每个联系人和合作伙伴一行。感谢结构升级,但我现在不能这样做。我必须处理这种强加的结构。有任何SQL函数可以拆分或分解此partners列吗?您可以在分号上分解,然后用逗号内爆,并在查询中使用
WHERE col IN()
子句……它也可以是
WHERE LOCATE(CONCAT(;”,2,“;”),CONCAT(;”,partners,;”)
这应该比
REGEXP
快,但可能比
FIND_IN_SET
SELECT*FROM contacts慢,其中Partners REGEXP'[[::]]比其他解决方案快得多。谢谢你们!。。。也可能是
的位置(CONCAT(“;”,2,“;”),CONCAT(“;”,Partners,”)
应该比
REGEXP
快,但可能比
FIND_IN_SET
SELECT*FROM contacts,Partners REGEXP'[[:]]比其他解决方案快得多。谢谢你们!请检查此URL:-
FIND_IN_SET
用于逗号分隔的值,这里的问题是值是分号分隔的请检查此URL:-
FIND_IN_SET
用于逗号分隔的值,这里的问题是值是分号分隔的