我们可以比较MySQL中多维Json编码的值吗



我正在使用WordPress平台,并使用WP_Query来调用我的数据,尽管如果可以的话,可以使用自定义MYSQL脚本

我只想添加一个where条件,它可以过滤JSON值,如下所述:

所以在postmeta表中,我有以下列

meta_key: _stock_reserve_outlet_extended
meta_value: a:2:{s:8:"outlet_2";a:2:{s:5:"stock";s:2:"20";s:5:"rider";s:2:"-1";}s:8:"outlet_1";a:2:{s:5:"stock";i:-4;s:5:"rider";i:0;}}

它实际上是由get_post_meta((函数提取的数组:

Array ( 
[outlet_2] => Array ( 
[stock] => 45 
[rider] => 0 
) 
[outlet_1] => Array ( 
[stock] => -4 
[rider] => 0) 
) 
)

我想在从脚本调用行的过程中,通过比较以下内容来筛选行:股票>出口_2中的0

我试图通过json_search来搜索过滤器json值过滤,但这并不能按关键字进行比较。

为了尝试WP_Query,我使用了以下方法,但没有显示效果

$args['meta_query'][] = array(
'key'     => '_stock_outlet_extended',
'value'   => array(
'key' => 'stock',
'value' => '18'
),
'compare' => '>',
);

然后我尝试了以下脚本,但效果不佳:

SELECT meta_value
FROM `frbl1ozme_postmeta`
WHERE `post_id` = 3699 AND `meta_key` = '_stock_outlet_extended' AND meta_value ->'$.stock' > 1;

有人知道如何处理这类标准吗?

我的观察者是什么如果您使用wordpress的update_post_meta((函数保存任何数组,那么它将对其进行序列化,并且您无法通过脚本过滤行。

因此,在了解了这一事实后,我对结构进行了更改,并根据股票的价值条件保存状态,因此我可以通过MYSQL轻松地过滤行。

因此,在一行答案中,到目前为止,还无法通过mysql查询实现过滤序列化行。

感谢大家的帮助,特别是@RiggsFilly

最新更新