Wordpress元值(序列化)过滤器

时间:2018-08-27 08:01:29

标签: mysql wordpress serialization meta

我有一个元密钥_student_registration_data存储在wordpress数据库中,该元密钥具有如下序列化数组的元值:

a:9:{s:4:"name";s:20:"John Doe";s:11:"father_name";s:10:"Arnold";s:4:"cnic";s:13:"5540545612812";s:12:"home_address";s:9:"Scheme-33";s:16:"telephone_number";s:12:"923332654324";s:15:"registration_id";s:6:"08CS68";s:10:"program_id";s:1:"1";s:9:"cohort_id";s:1:"6";s:10:"section_id";s:1:"7";}

现在,我想要一个mysql查询或一些内置的wordpress函数,借助它们我可以过滤registration_id等于08CS68的usermeta行。

谢谢。

2 个答案:

答案 0 :(得分:1)

您可以使用SUBSTRING_INDEX从字符串中提取registration_id

SELECT *
FROM yourtable
WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(_student_registration_data,
                    'registration_id', -1), ';', 2), ':', -1) = '"08CS68"'

答案 1 :(得分:0)

尼克的答案是关键,但这并不能解决我的问题。这是实际有效的方法:

SELECT * FROM (SELECT * FROM `cn_usermeta` WHERE meta_key = '_student_registration_data') as META WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(META.meta_value, 'registration_id', -1), ';', 2), ':', -1) = '"08CS68"'

特别感谢Nick:)