Php 过滤器MySQL逗号分隔字段

Php 过滤器MySQL逗号分隔字段,php,mysql,sql,Php,Mysql,Sql,在我的表中有一个名为agency_id的字段。它将具有逗号分隔的字符串值,如下所示。a0001,a0002。每个记录可以包含一个或多个代理ID 现在我需要使用给定的代理id搜索表 如果我给a1235,它应该返回上面显示的两行。如果我给出a1234,它应该只返回带有a1234的行 我怎么做?我在a1234中尝试了代理ID,并在集合中找到了,但没有成功 完整查询- 尝试使用like 而不是在 in允许您指定多个值,但它不会将a1234和a1235视为两个不同的值。使用LIKE运算符而不是in如何 S

在我的表中有一个名为agency_id的字段。它将具有逗号分隔的字符串值,如下所示。a0001,a0002。每个记录可以包含一个或多个代理ID

现在我需要使用给定的代理id搜索表

如果我给a1235,它应该返回上面显示的两行。如果我给出a1234,它应该只返回带有a1234的行

我怎么做?我在a1234中尝试了代理ID,并在集合中找到了,但没有成功

完整查询-

尝试使用like

而不是在


in允许您指定多个值,但它不会将a1234和a1235视为两个不同的值。

使用LIKE运算符而不是in如何

SELECT ov.*,c.name as company_name 
FROM (SELECT v.vacancy_id,v.company_id,v.designation,v.job_ref_number 
  FROM `t2o_vacancies` AS v  
  WHERE `opening_date` <= '2014-01-27' 
  AND `closing_date` >= '2014-01-27'
  AND posting_type= 'Agency' 
  AND agency_ids LIKE '%a1234%' 
  ORDER BY v.opening_date DESC ) AS ov 
  LEFT JOIN t2o_companies AS c ON ov.company_id = c.id
您当然可以使用像%a1235%这样的where代理ID,但这可能不是最好的方法

您考虑过使用关系数据库吗

如果可以向模式中添加另一个表,则可以执行以下操作

table t2o_companies
normal structure......

table t2o_vacancies
normal structure......


table t2o_companies_t2o_vacancies
id company_id vacancie_id
我不确定您当前的模式是什么,但如果您需要使用agency_id获取行,那么我将有一个联接表,而不仅仅是用逗号分隔将它们保存在一个字段中


但是,如果您不想更改架构,那么请不要忘记为代理ID编制索引,以便进行更快的搜索。

您可以显示您的表结构吗?如果您在a123字段中有该结构,则该结构将失败,a12和搜索类似于%a12%,它将同时检索这两种内容,只需检索a12@gsalgadotoledo解决此问题的一种方法是在字符串后面添加逗号,如%a12%,以确保只返回a12,如果列中的最后一个值不存在,则需要在该值后面添加逗号,但我认为在这种情况下使用嵌套表会更好。是的@Bhushan我实际上可以使用类似这样的东西解决问题:代理ID如“a1235,%”或代理ID如“%”,a1235”或类似“a1235”
AND agency_ids IN ('a1234')
SELECT ov.*,c.name as company_name 
FROM (SELECT v.vacancy_id,v.company_id,v.designation,v.job_ref_number 
  FROM `t2o_vacancies` AS v  
  WHERE `opening_date` <= '2014-01-27' 
  AND `closing_date` >= '2014-01-27'
  AND posting_type= 'Agency' 
  AND agency_ids LIKE '%a1234%' 
  ORDER BY v.opening_date DESC ) AS ov 
  LEFT JOIN t2o_companies AS c ON ov.company_id = c.id
table t2o_companies
normal structure......

table t2o_vacancies
normal structure......


table t2o_companies_t2o_vacancies
id company_id vacancie_id