Meta_query confronta la spiegazione dell'operatore
2 risposta
- voti
-
- 2012-10-29
Iprimi diversifunzionano cometi aspetteresti:
= equals != does not equal > greater than >= greater than or equal to < less than <= less than or equal to
MI PIACE e NON MI PIACE
LIKE
eNOT LIKE
sono operatori SQL cheti consentono di aggiungere simbolijolly,quindipotresti avere unameta query simile a questa:array( 'key' => 'name', 'value' => 'Pat', 'compare' => 'LIKE' )
Questo restituirebbetuttii postin cuiilmeta valore "nome" ha la stringa "Pat". In questo caso,"Pat" "Patricia"e "Patrick"ti verrebbero restituiti. È disponibile una spiegazione deltutorialnon WordPress qui .
L'aggiunta del caratterejolly
%
non ènecessaria,perché viene aggiuntoperimpostazionepredefinita come ha detto @Herbnel suo risposta . In questomodo:$meta_value = '%' . like_escape( $meta_value ) . '%';
- vedi sorgente .
IN e NOT IN
IN
eNOT IN
selezionano qualsiasi corrispondenza che sitroviin (ononin) l'array dato. Quindipotrestifare qualcosa delgenere:array( 'key' => 'color', 'value' => array('red', 'green', 'blue') 'compare' => 'IN' )
e otterrebbetuttii post conil coloreimpostato su rosso,verde oblu. Usando "NOT IN" si ottieneil contrario,tuttii post che hanno un valoreimpostato su qualcosa di diverso da quello che ènell'array.
L'SQLgeneratoper questo sarebbe simile a questo:
SELECT * FROM posts_meta WHERE value IN ("red", "green", "blue")
BETWEEN e NOT BETWEEN
BETWEEN
eNOT BETWEEN
consentono di definire unintervallo di valori chepotrebberoessere correttie richiedono difornire due valoriin un arraynellameta_query:array( 'key' => 'price', 'value' => array(20,30) 'compare' => 'BETWEEN' )
In questomodo otterraituttii postin cuiilprezzo è compresotra 20e 30. Questapersona analizza unesempio con le date.
NON ESISTE
NOT EXISTS
èproprio come sembra:ilmeta valorenon èimpostato o èimpostato su un valorenullo. Tutto ciò di cui haibisognoper quella query è la chiavee l'operatore di confronto:array( 'key' => 'price', 'compare' => 'NOT EXISTS' )
Questapersona avevabisogno diinterrogarenon-meta valoriesistentie ne avevanobisognopergiocarebene congli altri.
Spero che questo aiuti!
The first several work as you would expect:
= equals != does not equal > greater than >= greater than or equal to < less than <= less than or equal to
LIKE and NOT LIKE
LIKE
andNOT LIKE
are SQL operators that let you add in wild-card symbols, so you could have a meta query that looks like this:array( 'key' => 'name', 'value' => 'Pat', 'compare' => 'LIKE' )
This would return all posts where the meta value "name" has the string "Pat". In this case, "Pat" "Patricia" and "Patrick" would all be returned back to you. There's a non-WordPress tutorial explanation here.
Adding the wildcard character
%
isn't necessary, because it gets added by default like @Herb said in his below answer. Like this:$meta_value = '%' . like_escape( $meta_value ) . '%';
- see source.
IN and NOT IN
IN
andNOT IN
select any matches that are in (or not in) the given array. So you could do something like this:array( 'key' => 'color', 'value' => array('red', 'green', 'blue') 'compare' => 'IN' )
and it would get all posts that have the color set to either red, green, or blue. Using 'NOT IN' gets the reverse, any posts that have a value set to anything else than what's in the array.
The generated SQL for this would look something like this:
SELECT * FROM posts_meta WHERE value IN ("red", "green", "blue")
BETWEEN and NOT BETWEEN
BETWEEN
andNOT BETWEEN
allow you to define a range of values that could be correct, and require you to give two values in an array in your meta_query:array( 'key' => 'price', 'value' => array(20,30) 'compare' => 'BETWEEN' )
This will get you all posts where the price is between 20 and 30. This person digs into an example with dates.
NOT EXISTS
NOT EXISTS
is just like what it sounds - the meta value isn't set or is set to a null value. All you need for that query is the key and comparison operator:array( 'key' => 'price', 'compare' => 'NOT EXISTS' )
This person needed to query non-existent meta values, and needed them to play nice with others.
Hope this helps!
-
Nota: se stai usando l'array "meta_query",letue chiavinon dovrebbero avereilprefisso "meta_".Se stai usando `$ query->meta_key`,` $ query->meta_value`,ecc.,Questi dovrebbero comunquemantenereilprefisso.Note: If you're using `meta_query` array, your keys should not be prefixed with `meta_`. If you're using `$query->meta_key`, `$query->meta_value`, etc. then these should still retain the prefix.
- 1
- 2014-08-20
- Sean
-
Non riesco atrovare una spiegazione su cosafa l'opzione di confronto "IN".Qualcheidea su comefunziona?I can't seem to find an explanation on what the "IN" compare option does. Any idea how that works?
- 0
- 2015-03-09
- Joe
-
@ Joe,non soperchénon ho aggiuntonulla su "IN"e "NOT IN".Homodificatoe aggiornato la risposta con quei confronti.@Joe, I don't know why I didn't add anything about "IN" and "NOT IN". I've edited and updated the answer with those comparisons.
- 2
- 2015-03-09
- Jen
-
Questa è un'ottima risposta,ma ora sono disponibili altre opzioni: https://codex.wordpress.org/Class_Reference/WP_Meta_QueryThis is a great answer but there are some more options available now-: https://codex.wordpress.org/Class_Reference/WP_Meta_Query
- 0
- 2020-08-28
- noelmcg
-
"EXISTS","REGEXP","NOT REGEXP"e "RLIKE"'EXISTS' , 'REGEXP', 'NOT REGEXP' and 'RLIKE'
- 0
- 2020-08-28
- noelmcg
-
- 2013-10-13
Tienipresente che quando utilizzi un valoremeta_compare di "LIKE",WordPress avvolge automaticamenteil caratterejolly (%) attorno alla stringameta_value.Quindi l'esempio "Pat%"potrebbenon restituire alcun risultato.
Note that when using a meta_compare value of 'LIKE', WordPress automatically wraps the wildcard character ( % ) around the meta_value string. So the 'Pat%' example could fail to return any results.
-
ci sonoinformazioni al riguardonei documenti da qualcheparte Herb?L'esempio dovrebbe cambiareper rimuovere "%"?is there info about that in the docs somewhere Herb? Should the example change to remove the `%`?
- 0
- 2013-11-22
- Jen
-
Dovrebbe,l'hofattoproprio adesso,vedere la [fonte] (https://core.trac.wordpress.org/browser/tags/3.8.1/src/wp-includes/meta.php#L841),quindidiventamolto chiaro che Herb ha ragione.@guiniveretooIt should, I actually did that right now, see the [source](https://core.trac.wordpress.org/browser/tags/3.8.1/src/wp-includes/meta.php#L841), then it gets very clear that Herb is right. @guiniveretoo
- 0
- 2014-04-08
- Nicolai
Honotato che ci sonomolti operatori chepossonoessere usatiper confrontarein meta_query. Tuttavia,non sono abbastanza sicuro di quale operatore dovrei usare,èin qualchemodo confuso come l'operatore
=
eLIKE
.Vorrei sapere cosa significanoesattamente ogni operatoree in quali condizioni dovrei usarli.
Grazie.