WordPress decimal型とnumeric型(少数を含む数の比較)

nissy 55views 更新:2017年1月12日

結構はまった内容なのでハックに残しておきます
wordpressでget_postsやwp_queryをする際の引数に以下のような、条件を追加するとします。

$args = array(
    'post_type' => 'hoge',
    'meta_query' => array(
        'relation' => 'AND'
     //条件1   
        array(
            'key' => 'lat',
            'value' => array(35.1,36.1),
            'type' => 'NUMERIC',
            'compare' => 'BETWEEN'
        ),
     //条件2
        array(
            'key' => 'lng',
            'value' => array(135.11,135.12),
            'type' => 'DECIMAL',
            'compare' => 'BETWEEN’
        )
    )
);

以上の条件1と2は、うまく機能していません。

decimal型とnumeric型とは?

wordpressの関数でデータ型を指定するとき、数値関係では以下の種類があります。

type  role
‘DECIMAL’  浮動小数点数
‘SIGNED’or’NUMERIC’  整数(符号あり)
‘UNSIGNED’  整数(符号なし)

これより、条件1の方は’type’をNUMERICにしているので、’value’に入れる数値を整数値にする必要があります。

array(
    'key' => 'lat',
    'value' => array(35,36),
    'type' => 'NUMERIC',
    'compare' => 'BETWEEN'
)

decimal型の指定方法について

decimalを指定するときは、ただ指定するだけではなく
DECIMAL(a,b) ・・・ a:数の最大桁数,b:小数点以下の最大桁数
以上のように指定しなければいけません。これより、条件2の方は、以下のようにオプションを指定しなければなりません。

array(
    'key' => 'lng',
    'value' => array(135.11,135.12),
    'type' => 'DECIMAL(5,2)',
    'compare' => 'BETWEEN'
)

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません