上周,我在一个拉取请求中使用了JSON_CONTAINS。但是,当我的同事在本地运行并审查代码时,代码却失败了,因为JSON_CONTAINS在MYSQL和MariaDB中用法不一样。而我运行的是 MariaDB 而不是 MYSQL。
WHERE
usermeta.meta_key = 'demo_key'
AND JSON_CONTAINS(usermeta.meta_value, redirects.id);
这里的meta value是一个包含ID的数组,像这样保存到数据库中。
update_user_meta(
$user_id,
'demo_key',
wp_json_encode( array_unique( $redirects ) )
);
我们来回讨论,试图找到一个在两个数据库中都能使用的解决方案,但未能如愿。
最后,我同事建议我们把meta value保存为逗号分隔的字符串,然后使用 FIND_IN_SET 来完成这项工作。
也许你已经知道答案了,它很好用。
WHERE
usermeta.meta_key = 'demo_key'
AND FIND_IN_SET(
redirects.id,
CAST(usermeta.meta_value as CHAR)
) > 0;
发表回复