PHP/sqlselect使用LIKE子句
我有多个字符串,如下所示:PHP/sqlselect使用LIKE子句,php,mysql,sql,Php,Mysql,Sql,我有多个字符串,如下所示: Non-Geographic Number 0843123456 Non-Geographic Number 0843654321 及 在我的billing\u voip\u match表中,我有一个包含以下行的描述列 Non-Geographic Number 0845 Non-Geographic Number 0843 我试图让上面的4个值与上面的2个值匹配,但因为数字中没有空格,所以根本不匹配 我尝试运行的SQL查询是 SELECT * from voip
Non-Geographic Number 0843123456
Non-Geographic Number 0843654321
及
在我的billing\u voip\u match
表中,我有一个包含以下行的描述列
Non-Geographic Number 0845
Non-Geographic Number 0843
我试图让上面的4个值与上面的2个值匹配,但因为数字中没有空格,所以根本不匹配
我尝试运行的SQL查询是
SELECT * from voip_billing_match where description LIKE '%Non-Geographic Number 0843123456%'
哪个应返回非地理编号0843
和选择*from vip\u billing\u match,其中的描述如“%Non-Geographic Number 0845123456%”
应返回非地理编号0845,您的查询应如下所示:
SELECT * from voip_billing_match
where description LIKE CONCAT(SUBSTR('Non-Geographic Number 0843123456', 0, 26), '%')
-符号类似于星号。您应该将字符串修剪为前x个字符(在您的情况下,如果我正确计数,则为26): %表示“任意字符”(在前面/中间/后面),但您要查找的是“非地理数字0845654321”加上前面或后面的其他字符(或只是字符串),这样您就不会得到任何结果 在我的示例中,您不需要%,因为您已经在寻找正确的字符串(即:“非地理编号0845”) 如果您想要纯SQL:
SELECT * from voip_billing_match where description = SUBSTRING('Non-Geographic Number 0845654321', 0, 26)
如果我理解正确,您需要前缀“非地理编号”和字符串的前四位数字:
SELECT LEFT('description',26)
FROM voip_billing_match
WHERE description LIKE 'Non-Geographic Number%'
你应该做相反的事情:
SELECT * from voip_billing_match
where 'Non-Geographic Number 0843123456' LIKE CONCAT(description, '%');
这将返回描述为非地理编号0843的行。
对其他三个字符串执行相同的操作
说明:
LIKE右侧的图案必须在左侧的表达式中完全找到。因此,左侧的表达式必须包含模式,否则
试试这个查询,它似乎可以工作
SELECT description
FROM billing_voip_match
WHERE ('Non-Geographic Number 0845654321' LIKE CONCAT('%', description, '%'));
它似乎被切换了?试图使用%Non-Geographic Number 0843123456%获取非地理号码0843吗?请检查我的问题。我的字符串有完整的数字,我需要将它们与…0843和…0845匹配
SELECT * from voip_billing_match
where 'Non-Geographic Number 0843123456' LIKE CONCAT(description, '%');
SELECT description
FROM billing_voip_match
WHERE ('Non-Geographic Number 0845654321' LIKE CONCAT('%', description, '%'));