MySQL的。从表中选择与正则表达式模板匹配的全部或全部

时间:2015-11-05 12:39:45

标签: mysql regex

我有一个这样的MySQL请求:

$q = "SELECT * FROM `shops` WHERE `shop_name` LIKE '%".$name."%';";

它搜索与正则表达式模板匹配的记录。但当它什么都没发现时,它会返回所有记录。但我希望它在这种情况下不返回任何内容。怎么做?

2 个答案:

答案 0 :(得分:1)

您可以使用RLIKE operator of MYSQ L

$q = "SELECT * FROM `shops` WHERE `shop_name` RLIKE '%".$name."%';";

答案 1 :(得分:1)

在您的情况下,我认为,您将一个epmty字符串发送到$ name。 因为当模式不匹配时,LIKE不会发送所有集合。 如果$ name为空,则查询将为" SELECT * FROM shops WHERE shop_name LIKE' %%';"。此查询将从shops重新检索所有集。

在执行查询之前,您需要检查$ name是否为空字符串,或者使用以前的建议(RLIKE)。