我很难比较负数和正数。这段代码在两个正数之间工作正常,但在负数和正数之间工作正常。
这是我的“meta\\u查询”的一部分:
array_push($metaQuery,
array(\'relation\' => \'AND\',
array(
\'key\' => \'longitude\',
\'value\' => array($minlng, $maxlng),
\'compare\' => \'BETWEEN\',
),
)
);
例如,如果$minlng为-1.5,$maxlng为1.5。它将通过等于-3的值。
如果有帮助,下面是meta\\u查询的var\\u转储:
array(1) {
[0]=>
array(2) {
["relation"]=>
string(3) "AND"
[0]=>
array(3) {
["key"]=>
string(9) "longitude"
["value"]=>
array(2) {
[0]=>
float(-0.989505008087)
[1]=>
float(1.31257480809)
}
["compare"]=>
string(7) "BETWEEN"
}
}
}
SO网友:mmm
我尝试了以下代码:
$posts = get_posts([
"post_type" => "CUSTOM_POST_TYPE",
"meta_query" => [
\'relation\' => \'AND\',
[
\'key\' => \'longitude\',
\'value\' => [-0.9895, 1.3125],
\'compare\' => \'BETWEEN\',
"type" => "NUMERIC",
],
],
]);
当我删除时
"type" => "NUMERIC"
, 我可以重现你的问题,因为比较是基于字符串的。
但在添加类型时NUMERIC
, MySQL请求包含CAST(wp_postmeta.meta_value AS SIGNED) BETWEEN \'-0.9895\' AND \'1.3125\'
查询返回可预见的值。