如何从 MySQL 行中的内爆数组中提取一个值

我正在使用内爆将几个值插入MySQL数据库中的一行中。

implode(' ', $_POST['tag']);

假设我有一个以3个不同值命名的行命名的表,这些值插入其中,如下所示:producttags

usb adapter charger

我尝试过使用像运算符()使用此方法,但这不起作用。%

$sql = "SELECT * FROM product WHERE tags='%usb%'";

如何在 mysql 查询中使用 WHERE 从内爆数组中仅提取一个值?


PIPIONE
浏览 114回答 1
1回答

湖上湖

我同意关于重新设计数据库的意见。乍一看,似乎使用肯定会得到你想要的结果,但是在阅读@Patrick Q的pan -panther示例之后,它很有意义,这不是一个好的解决方案。有一些方法可以准确获取您要查找的标记字符串,但它可能会损害性能,并且查询将更长且更复杂。因此,下面将演示查询在当前数据值下的外观:LIKELIKEtagsMySQL query:SELECT tags,       SUBSTRING_INDEX(SUBSTRING_INDEX(tags,' ',FIND_IN_SET('usb',REPLACE(tags,' ',','))),' ',-1) v FROM   mytableHAVING v = 'usb';如您所见,有几个函数仅用于从数据单元格中获取确切的字符串。由于您的示例数据是用空格分隔的,并且用逗号标识值分隔,因此首先在列上进行,以用逗号替换空格。然后使用两次来获取字符串,使用中提取的位置。最后,最后只得到你要找的标签。FIND_IN_SETREPLACEtagsSUBSTRING_INDEXFIND_IN_SETHAVING进一步演示在这里 : https://www.db-fiddle.com/f/joDa7MNcQL2RakTgBa7qBM/3
打开App,查看更多内容
随时随地看视频慕课网APP