gpt4 book ai didi

php - 如何使用mysql在序列化字段中进行搜索?

转载 作者:行者123 更新时间:2023-11-29 01:02:45 26 4
gpt4 key购买 nike

我有mysql数据库,每条记录都有这样的字段(字段名称是stock),它填充了如下序列化字符串(示例数据):

a:3:{i:0;a:5:{i:1;s:4:"1.30";s:1:"x";s:4:"4.75";i:2;s:5:"11.00";s:6:"update";s:19:"2007-08-12 09:35:12";s:6:"status";s:3:"Run";}i:1;a:5:{i:1;s:4:"1.33";s:1:"x";s:4:"4.50";i:2;s:5:"10.00";s:6:"update";s:19:"2007-08-07 15:51:01";s:6:"status";s:3:"Run";}i:2;a:5:{i:1;s:4:"1.31";s:1:"x";s:4:"4.53";i:2;s:5:"10.10";s:6:"update";s:19:"2007-8-1 21:09:19";s:6:"status";s:3:"Run";}}

这样的字段被这个数组序列化如下:

array(
[0]=>Array([1]=>1.30,[x]=>4.75,[2]=>11.00,[update]=>2007-8-12 09:35:12,[status]=>Run)
[1]=>Array([1]=>1.33,[x]=>4.50,[2]=>10.00,[update]=>2007-8-7 15:51:01,[status]=>Run)
[2]=>Array([1]=>1.31,[x]=>4.53,[2]=>10.10,[update]=>2007-8-1 21:09:19,[status]=>Run)
)

我的问题是如何搜索 array['update']>2007-8-7 和 array['1']>1.32 字段 'stock' 的未序列化值的记录?谢谢!

最佳答案

在 MYSQL 中,您可以使用 LIKE 运算符在字符串中进行搜索。它会比在正常领域慢。 如果字段中有 1 个值

使用示例:

SELECT {your code here}
WHERE {your field name} LIKE '%[update]=>2007-8-7%'

%表示这个子串前后的任意符号。它将在字符串中搜索此模式

如果你想检查多个值,你有 3 个选项:

编辑 LIKE 模式

您可以将您的 LIKE 模式编辑为多 2 个字符串:

LIKE '%[1]=>1.32%[update]=>2007-8-7%'

此字符串将在字符串中搜索 2 个值

添加第二个 LIKE 运算符

第二个选项是将 LIKE 运算符写两次。示例:

SELECT {your code here}
WHERE
{field} LIKE '%[1]=>1.32%'
AND {field} LIKE '%[update]=>2007-8-7%'

使用正则表达式

对于像您这样的复杂字段,您可以尝试使用正则表达式。您可以使用以下命令通过正则表达式执行搜索:警告!错误的代码风格!

SELECT {your code here}
WHERE {field} REGEXP '[^}]*s:4:"{ARRAY[1] TARGET VALUE}"[^}]*s:19:"{TARGET DATE}[^"]*".*'

它将返回所有包含您要查找的值的 FIELDS。然后,您可以在代码中手动使用查找所需的值。

关于php - 如何使用mysql在序列化字段中进行搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40691318/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com