Operadores
Vincent Depassier · 29 de agosto de 2026
PraxQL — Operadores
Los operadores aparecen en condiciones where (y having para consultas de agregación). Cada condición tiene la forma:
{ "field": "NombreColumna", "op": "operador", "value": algúnValor }Los nombres de operador se comparan sin distinguir mayúsculas: isNull, isnull e ISNULL son el mismo operador.
Operadores de Comparación
Operador | SQL equivalente | Descripción |
|
| Igual |
|
| No igual |
|
| Mayor que |
|
| Mayor o igual |
|
| Menor que |
|
| Menor o igual |
{ "field": "Total", "op": "gte", "value": 100 }
{ "field": "Estado", "op": "neq", "value": "Eliminado" }
{ "field": "FechaCreacion", "op": "gt", "value": "2026-01-01" }Coincidencia de Patrones
Operador | SQL equivalente | Descripción |
|
| Coincidencia de patrón, sensible a mayúsculas. Usa |
|
| Coincidencia de patrón, insensible a mayúsculas. Usa |
{ "field": "Nombre", "op": "like", "value": "%Corp%" }
{ "field": "Email", "op": "ilike", "value": "%@gmail.com" }La longitud del patrón está limitada a 200 caracteres.
Pertenencia a Conjunto
Operador | SQL equivalente | Descripción |
|
| El valor es uno de los elementos del array |
|
| El valor no es ninguno de ellos. |
{ "field": "Estado", "op": "in", "value": ["Activo", "Pendiente", "Trial"] }
{ "field": "Estado", "op": "notIn", "value": ["Eliminado", "Archivado"] }value debe ser un array.
Verificaciones Nulas / Booleanas
Operador | SQL equivalente | Descripción |
|
| La columna no tiene valor |
|
| La columna tiene valor |
|
| La misma verificación, decidida por si mandás un valor |
{ "field": "EliminadoEn", "op": "isNull" }
{ "field": "EliminadoEn", "op": "isNotNull" }Preferí isNull y isNotNull. Dicen explícitamente lo que is expresa mediante la presencia o ausencia de value, que es la parte que nadie adivina: con is, mandar "value": null verifica IS NULL, y omitir la clave por completo verifica IS NOT NULL.
Para verificar una columna booleana, compará: { "field": "EsVerificado", "op": "eq", "value": true }. Mandá un true de JSON, nunca el string "true" — un string no matchea ninguna fila y no reporta ningún error.
Rango
Operador | SQL equivalente | Descripción |
|
| Verificación de rango inclusivo |
{ "field": "Fecha", "op": "between", "value": ["2026-01-01", "2026-06-30"] }
{ "field": "Puntaje", "op": "between", "value": [70, 100] }value debe ser un array de dos elementos: [mínimo, máximo]. Ambos límites son inclusivos.
Operadores de Array / Texto
Operador | Descripción |
| La columna array contiene todos los valores especificados |
| Búsqueda de texto completo en una columna de texto |
{ "field": "Etiquetas", "op": "contains", "value": ["urgente", "facturación"] }
{ "field": "Descripcion", "op": "textsearch", "value": "logística almacén" }textsearch sirve para columnas de texto largo. Devuelve resultados sin ranking — no hay puntaje de relevancia, así que no podés ordenar por "mejor coincidencia".
Agrupación Lógica
AND (por defecto)
Las condiciones en el mismo array se unen con AND automáticamente:
"where": [
{ "field": "EsActivo", "op": "eq", "value": true },
{ "field": "Region", "op": "eq", "value": "EU" }
]→ WHERE EsActivo = true AND Region = 'EU'
OR
Usa un objeto or para unir condiciones con OR:
"where": [
{
"or": [
{ "field": "Region", "op": "eq", "value": "EU" },
{ "field": "Region", "op": "eq", "value": "US" }
]
}
]→ WHERE (Region = 'EU' OR Region = 'US')
AND anidado dentro de OR
"where": [
{ "field": "EsActivo", "op": "eq", "value": true },
{
"or": [
{ "field": "Region", "op": "eq", "value": "EU" },
{
"and": [
{ "field": "Region", "op": "eq", "value": "US" },
{ "field": "Nivel", "op": "eq", "value": "Enterprise" }
]
}
]
}
]→ WHERE EsActivo = true AND (Region = 'EU' OR (Region = 'US' AND Nivel = 'Enterprise'))
Guardrails
Límite | Valor |
Máximo de condiciones where por consulta | 50 |
Profundidad máxima de anidación de condiciones | 5 |
Longitud máxima de patrón | 200 caracteres |
Superar cualquiera de ellos devuelve 400 INVALID_QUERY en vez de un resultado truncado.