请在使用查询时帮助我解决查询 - 我只想减去几个字符,然后使用 % 找到匹配的 LIKE:
select * from `providers` WHERE `name` LIKE SUBSTR('telin',1,4)%
请让我知道我做错了什么,非常感谢任何形式的帮助!
最佳答案
假设 telin
是一个列名而不是文字字符串,它应该用反引号引起来。如果它是文字串,那么显然没有必要从中提取子串。但是,我怀疑这是您在回显完整查询后粘贴到此处的 PHP 变量的结果,然后它被正确地用单引号引起来。
无论如何,您需要通过 CONCAT()
将 SUBSTR()
结果连接到 '%'
上:
SELECT * FROM `providers` WHERE `name` LIKE CONCAT(SUBSTR(`telin`,1,4), '%');
但更好的方法是使用 LEFT()
比较每个的前 4 个字符:
SELECT * FROM `providers` WHERE LEFT(`name`, 4) = LEFT(`telin`,4);
关于mysql substr 不像 php 那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15908498/