Meta_query compare la explicación del operador

33

Noté que hay muchos operadores que pueden usarse para comparar en meta_query. Sin embargo, no estoy muy seguro de qué operador debo usar, de alguna manera es confuso como operador = y LIKE .

Me gustaría saber qué significa exactamente cada operador y en qué condiciones debo usarlos.

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

Gracias.

    
pregunta dev-jim 29.10.2012 - 18:47

2 respuestas

46

Los primeros trabajos acerca de lo que usted esperaría:

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

LIKE y NOT LIKE son operadores de SQL que le permiten agregar símbolos de comodín, por lo que podría tener una meta consulta que se parece a esto:

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

Esto devolvería todas las publicaciones donde el valor meta "nombre" tenga la cadena "Pat". En este caso, "Pat", "Patricia" y "Patrick" le serán devueltas. Hay una explicación del tutorial que no es de WordPress aquí .

No es necesario agregar el carácter comodín % , porque se agrega de forma predeterminada, como @Herb dijo en su siguiente contestar . Así: $meta_value = '%' . like_escape( $meta_value ) . '%'; - vea fuente .

IN y NOT IN seleccionan cualquier coincidencia que esté en (o no en) la matriz dada. Así que podrías hacer algo como esto:

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

y obtendría todas las publicaciones que tienen el color establecido en rojo, verde o azul. El uso de 'NOT IN' obtiene lo contrario, cualquier publicación que tenga un valor establecido en cualquier otra cosa que no sea lo que está en la matriz.

El SQL generado para esto se vería así:

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

BETWEEN y NOT BETWEEN le permiten definir un rango de valores que podrían ser correctos y requieren que proporcione dos valores en una matriz en su meta_query:

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

Esto te dará todas las publicaciones donde el precio sea entre 20 y 30. Esta persona profundiza en un ejemplo con fechas.

NOT EXISTS es como suena: el valor meta no está establecido o se establece en un valor nulo. Todo lo que necesita para esa consulta es el operador clave y de comparación:

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

Esta persona es necesaria para consultar valores meta no existentes, y Los necesitaba para jugar bien con los demás.

Espero que esto ayude!

    
respondido por el guiniveretoo 29.10.2012 - 19:48
7

Tenga en cuenta que al usar un valor meta_compare de 'LIKE', WordPress ajusta automáticamente el carácter comodín (%) alrededor de la cadena meta_value. Por lo tanto, el ejemplo 'Pat%' podría no devolver ningún resultado.

    
respondido por el bobbingwide 13.10.2013 - 22:13

Lea otras preguntas en las etiquetas