在mysql中分隔符搜索

时间:2014-11-09 19:24:52

标签: php mysql

在我的数据库中,我的行包含一个名为salt的列。盐柱具有不同的条目,如a + b + c,b + a + c,a + c + b ....

我想要做的是......我试图搜索具有+ b + c的盐,而不管字母表是否出现..

示例:即使我搜索a + b + c,我也应该得到b + a + c和a + c + b作为输出..

尝试的简单sql SELECT命令是:

$salt = "a+b+c";
select * from tableName where salt = '$salt';

从上面的查询中我得到的行只有+ b + c而不是b + a + c或c + a + b..etc

3 个答案:

答案 0 :(得分:0)

您可以通过以下Regular Expression获取它:

select * from tableName where salt REGEXP '[a-c]\\+[a-c]\\+[a-c]';

如果您发表评论(a+b+c+d+e+f):

    select * from tableName where salt REGEXP '[a-f]{1}\\+[a-f]{1}$';

答案 1 :(得分:0)

如果只是你所追求的那些组合,你可以试试这个:

SELECT * FROM tableName 
WHERE 
  (salt LIKE '%a+b+c%' OR
  salt LIKE '%a+c+b%' OR
  salt LIKE '%b+a+c%' OR
  salt LIKE '%b+c+a%' OR
  salt LIKE '%c+b+a%' OR
  salt LIKE '%c+a+b%')

或者,如果您需要不区分大小写的匹配项,

SELECT * FROM tableName 
WHERE 
  (LCASE(salt) LIKE '%a+b+c%' OR
  LCASE(salt) LIKE '%a+c+b%' OR
  LCASE(salt) LIKE '%b+a+c%' OR
  LCASE(salt) LIKE '%b+c+a%' OR
  LCASE(salt) LIKE '%c+b+a%' OR
  LCASE(salt) LIKE '%c+a+b%')

这应该有效,但性能可能不会很好。

答案 2 :(得分:0)

终于找到了解决方案:

SELECT * FROM `product_data` WHERE MATCH (`salt`)
AGAINST ('+Ambroxol +Levocetirizine' IN BOOLEAN MODE);