Explication de l'opérateur de comparaison Meta_query

33

J'ai remarqué qu'il y a beaucoup d'opérateurs qui peuvent être utilisés pour comparer dans meta_query. Cependant, je ne suis pas tout à fait sûr de savoir quel opérateur utiliser, c’est confus, comme = et LIKE operator.

Je voudrais savoir ce que chaque opérateur veut dire exactement et dans quel état je devrais les utiliser.

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

Merci.

    
posée dev-jim 29.10.2012 - 18:47

2 réponses

46

Les premiers travaux sur ce que vous attendez:

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

LIKE et NOT LIKE sont des opérateurs SQL qui vous permettent d'ajouter des symboles de caractères génériques. Vous pouvez ainsi avoir une méta-requête ressemblant à ceci:

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

Ceci renverrait toutes les publications où la méta valeur "name" a la chaîne "Pat". Dans ce cas, "Pat" "Patricia" et "Patrick" vous seraient tous renvoyés. Il existe une tutoriel autre qu'un didacticiel WordPress .

Il n'est pas nécessaire d'ajouter le caractère générique % , car il est ajouté par défaut, comme @Herb le précise ci-dessous répondre . Comme ceci: $meta_value = '%' . like_escape( $meta_value ) . '%'; - voir source

IN et NOT IN sélectionnent toutes les correspondances qui sont dans (ou non) dans le tableau donné. Pour que vous puissiez faire quelque chose comme ceci:

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

et tous les articles dont la couleur est définie sur rouge, verte ou bleue seront affichés. L’utilisation de 'NOT IN' obtient l’inverse, toutes les publications dont la valeur est définie sur autre chose que ce qui est dans le tableau.

Le code SQL généré pour cela ressemblerait à ceci:

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

BETWEEN et NOT BETWEEN vous permettent de définir une plage de valeurs pouvant être correcte et vous obligent à donner deux valeurs dans un tableau de votre méta_query:

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

Ceci vous permettra d'obtenir tous les articles dont le prix est compris entre 20 et 30. Cette personne creuse un exemple avec des dates.

NOT EXISTS est juste comme ce que ça sonne - la méta-valeur n'est pas définie ou est définie sur une valeur nulle. Tout ce dont vous avez besoin pour cette requête est la clé et l'opérateur de comparaison:

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

Cette personne devait interroger des méta-valeurs inexistantes, et besoin d’eux pour bien jouer avec les autres.

J'espère que cela aide!

    
réponse donnée guiniveretoo 29.10.2012 - 19:48
7

Notez que lorsque vous utilisez la valeur meta_compare de 'LIKE', WordPress enveloppe automatiquement le caractère générique (%) autour de la chaîne meta_value. Ainsi, l'exemple 'Pat%' pourrait ne pas renvoyer de résultats.

    
réponse donnée bobbingwide 13.10.2013 - 22:13

Lire d'autres questions sur les étiquettes