我正在使用内爆将几个值插入MySQL数据库中的一行中。implode(' ', $_POST['tag']);假设我有一个以3个不同值命名的行命名的表,这些值插入其中,如下所示:producttagsusb adapter charger我尝试过使用像运算符()使用此方法,但这不起作用。%$sql = "SELECT * FROM product WHERE tags='%usb%'";如何在 mysql 查询中使用 WHERE 从内爆数组中仅提取一个值?
1 回答
湖上湖
TA贡献2003条经验 获得超2个赞
我同意关于重新设计数据库的意见。乍一看,似乎使用肯定会得到你想要的结果,但是在阅读@Patrick Q的pan -panther示例之后,它很有意义,这不是一个好的解决方案。有一些方法可以准确获取您要查找的标记字符串,但它可能会损害性能,并且查询将更长且更复杂。因此,下面将演示查询在当前数据值下的外观:LIKELIKEtags
MySQL query:
SELECT tags,
SUBSTRING_INDEX(SUBSTRING_INDEX(tags,' ',FIND_IN_SET('usb',REPLACE(tags,' ',','))),' ',-1) v
FROM mytable
HAVING v = 'usb';
如您所见,有几个函数仅用于从数据单元格中获取确切的字符串。由于您的示例数据是用空格分隔的,并且用逗号标识值分隔,因此首先在列上进行,以用逗号替换空格。然后使用两次来获取字符串,使用中提取的位置。最后,最后只得到你要找的标签。FIND_IN_SETREPLACEtagsSUBSTRING_INDEXFIND_IN_SETHAVING
进一步演示在这里 : https://www.db-fiddle.com/f/joDa7MNcQL2RakTgBa7qBM/3
- 1 回答
- 0 关注
- 70 浏览
添加回答
举报
0/150
提交
取消