Описание оператора сравнения Meta_query

Я заметил, что для сравнения в meta_query можно использовать кучу оператора. Однако я не совсем уверен, какой оператор я должен использовать, он как-то запутан, как оператор = и LIKE.

Я хотел бы знать, что именно означает каждый оператор, и в каком состоянии я должен их использовать.

=
!=
>
>=
<
<=
LIKE
NOT LIKE
IN
NOT IN
BETWEEN
NOT BETWEEN
NOT EXISTS

Спасибо.

32 голоса | спросил dev-jim 29 +04002012-10-29T21:47:40+04:00312012bEurope/MoscowMon, 29 Oct 2012 21:47:40 +0400 2012, 21:47:40

2 ответа


45

Первые несколько работ, как вы ожидали бы:

=   equals
!=  does not equal
>   greater than
>=  greater than or equal to
<   less than
<=  less than or equal to

LIKE и NOT LIKE являются операторами SQL, которые позволяют добавлять символы wild-card, поэтому у вас может быть мета-запрос, который выглядит следующим образом:

array( 
    'key' => 'name', 
    'value' => 'Pat', 
    'compare' => 'LIKE'
)

Это приведет к возврату всех сообщений, где мета-значение «name» имеет строку «Pat». В этом случае «Пэт», «Патриция» и «Патрик» будут возвращены вам. Ниже приведено описание учебника, отличного от WordPress здесь .

Добавление символа подстановки % не требуется, поскольку оно добавляется по умолчанию, например, @Herb в нижнем ответить . Пример: $meta_value = '%' . like_escape( $meta_value ) . '%'; - см. .

IN и NOT IN выберите любые совпадения, которые находятся в (или нет) в заданном массиве. Таким образом, вы можете сделать что-то вроде этого:

array(
    'key'     => 'color', 
    'value'   => array('red', 'green', 'blue') 
    'compare' => 'IN'
)

, и он получит все сообщения, у которых есть цвет, красный или зеленый. Использование «NOT IN» получает обратное, любые сообщения, которые имеют значение, заданное для чего-либо еще, чем то, что находится в массиве.

Сгенерированный SQL для этого будет выглядеть примерно так:

 SELECT * FROM posts_meta WHERE value IN ("red", "green", "blue") 

BETWEEN и NOT BETWEEN позволяют определить диапазон значений, которые могут быть правильными, и требуют, чтобы вы дали два значения в массиве в метафайле:

array( 
    'key' => 'price', 
    'value' => array(20,30) 
    'compare' => 'BETWEEN'
)

Это даст вам все сообщения, где цена составляет от 20 до 30. Этот человек раскапывается в пример с датами.

NOT EXISTS точно так же, как это звучит - мета значение не установлено или установлено на нулевое значение. Все, что вам нужно для этого запроса, - это ключ и оператор сравнения:

array( 
    'key' => 'price', 
    'compare' => 'NOT EXISTS'
)

Этот человек , необходимый для запроса не -уживающие мета-значения, и им нужно было хорошо играть с другими.

Надеюсь, это поможет!

ответил guiniveretoo 29 +04002012-10-29T22:48:22+04:00312012bEurope/MoscowMon, 29 Oct 2012 22:48:22 +0400 2012, 22:48:22
7

Обратите внимание, что при использовании значения meta_compare 'LIKE' WordPress автоматически переносит символ подстановки (%) вокруг строки meta_value. Таким образом, пример «Pat%» может не дать никаких результатов.

ответил bobbingwide 14 +04002013-10-14T00:13:00+04:00312013bEurope/MoscowMon, 14 Oct 2013 00:13:00 +0400 2013, 00:13:00

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132