LIKE之后的MySQL子串

时间:2017-07-20 11:44:11

标签: php mysql mysqli

我有这个变量来自POST命令[通过SESSION] - > $ ark = 123456-78

我想在之前保留evey;" - "所以123456进行我的研究。

我认为使用Subtring会起作用所以我试过这个:

这是我的要求:

$req = "SELECT COUNT(`Home`) FROM `users` WHERE `Home` LIKE('$ark')";

我尝试了没有任何疑问结果:

$req = "SELECT COUNT(`Home`) FROM `users` WHERE `Home` LIKE FLOOR('$ark')";

$req = "SELECT COUNT(`Home`) FROM `users` WHERE `Home` LIKE SUBSTRING('$ark',6)"

我知道哪里弄错了?

编辑:最后我找到了使用SUBSTRING_INDEX()

的解决方案
$req = "SELECT COUNT(`Home`)FROM `users` WHERE `Home` LIKE SUBSTRING_INDEX('%$ark%','-','1')"; 

谢谢大家的帮助 Rflow

4 个答案:

答案 0 :(得分:2)

如果LIKE子句没有通配符,它​​就像操作符一样工作 所以当你尝试时 where home LIKE SUBSTRING('$ark',6),只不过是和 where home = '123456'这在你的情况下是不正确的。
因此,您必须使用通配符来匹配您的数据 where home LIKE concat('%', SUBSTRING('$ark',6), '%')(如果你知道123456不介于两者之间,你可以先跳过%),这等于
where home LIKE '%123456%'

答案 1 :(得分:1)

您需要%作为通配符

SELECT COUNT(`Home`) 
FROM `users` 
WHERE `Home` LIKE concat('%', SUBSTRING('$ark',6), '%')

答案 2 :(得分:1)

你可以使用concat来构建与wildchar一样的正确

$req = "SELECT COUNT(`Home`) FROM `users` WHERE `Home` LIKE concat('%', '$ark' , '%')";

答案 3 :(得分:1)

请尝试这个。希望它能起作用。

$req = "SELECT COUNT(`Home`) FROM `users` WHERE `Home` LIKE concat('%', SUBSTRING('$ark',6), '%')";