选择like但作为分隔符

时间:2018-05-21 05:35:27

标签: php mysql

专栏tags

sky***earth***moon  
sun***animals***iron  
silver***gold***night

*** - 是不同标记的分隔符

我想按字符串anima

搜索该列
$sql = "select * from images where tags like '%anima%'";

它会在结果中显示animals,但我只需要anima作为整个字符串,由***分隔。

在上面的示例中,结果应为零。

任何帮助?

3 个答案:

答案 0 :(得分:3)

使用REGEXP并搜索字边界所包围的anima

SELECT *
FROM images
WHERE tags REGEXP '[[:<:]]anima[[:>:]]';

按照以下链接进行演示,该演示显示逻辑正确。

Demo

来自documentation

  

REGEXP和RLIKE是REGEXP_LIKE()的同义词。

因此,我们也可以使用RLIKE代替REGEXP

答案 1 :(得分:0)

您也可以按照以下方式使用

SELECT * FROM `test_user` WHERE name RLIKE "[[:<:]]anima[[:>:]]"

答案 2 :(得分:0)

使用Tim Biegeleisen的回答,只是为了展示如何在php中添加。请记住,您应该使用参数化查询,而这个例子不是。

$query = "SELECT *
FROM images
WHERE tags REGEXP '[[:<:]]{$_POST['abc']}[[:>:]]'";