在我的数据库中,我的行包含一个名为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
答案 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);