为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
PIPIONE 2022-09-12 12:55:06
我正在使用内爆将几个值插入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


查看完整回答
反对 回复 2022-09-12
  • 1 回答
  • 0 关注
  • 70 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信