Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il filtro restringe i set di dati di grandi dimensioni solo ai record necessari. In REST, Il generatore di API dati supporta un parametro di query ispirato a $filter OData. Ogni filtro viene compilato in SQL con parametri per garantire sicurezza e coerenza.
Sguardo rapido
| Operator | Meaning |
|---|---|
eq |
uguale |
ne |
diverso da |
gt |
maggiore di |
ge |
maggiore o uguale a |
lt |
minore di |
le |
minore o uguale a |
and |
AND logico |
or |
OR logico |
not |
NOT logico |
( ) |
raggruppamento |
eq
Uguale a. Restituisce i record in cui il valore di un campo corrisponde esattamente al valore letterale specificato o null.
In questo esempio si ottengono libri in cui il titolo è uguale 'Dune'a , il flag disponibile è true, il prezzo è 20, la data di pubblicazione è il 1° gennaio 2024 e la classificazione è null.
GET /api/books?$filter=
title eq 'Dune' and
available eq true and
price eq 20 and
published_on eq 2024-01-01T00:00:00Z and
rating eq null
Annotazioni
$filter supporta eq null e ne null direttamente per i confronti null.
SQL concettuale
SELECT * FROM Books
WHERE title = 'Dune'
AND available = 1
AND price = 20
AND published_on = '2024-01-01T00:00:00Z'
AND rating IS NULL;
ne
Non uguale a. Restituisce i record in cui il valore di un campo non corrisponde al valore letterale specificato o non è Null.
In questo esempio si ottengono libri in cui il titolo non 'Foundation'è , il flag disponibile non è false, il prezzo non è zero, la data di pubblicazione non è il 31 dicembre 2023 e la classificazione non è null.
GET /api/books?$filter=
title ne 'Foundation' and
available ne false and
price ne 0 and
published_on ne 2023-12-31T00:00:00Z and
rating ne null
Annotazioni
Quando si filtrano in base ai campi date o datetime, usare il formato UTC ISO 8601 senza virgO (yyyy-MM-ddTHH:mm:ssZ).
I formati tra virgolette o di tipo OData non sono validi.
- Errato:
$filter=Date ge '2025-01-01' - Errato:
$filter=Date ge datetime'2025-01-01' - Risposta esatta:
$filter=Date ge 2025-01-01T00:00:00Z
SQL concettuale
SELECT * FROM Books
WHERE title <> 'Foundation'
AND available <> 0
AND price <> 0
AND published_on <> '2023-12-31T00:00:00Z'
AND rating IS NOT NULL;
gt
Maggiore. Restituisce i record in cui il valore di un campo è rigorosamente superiore al valore letterale specificato.
In questo esempio si ottengono libri il cui titolo viene ordinato alfabeticamente dopo 'A', il flag disponibile è true, il prezzo è maggiore di 10 e la data di pubblicazione è successiva al 1° gennaio 2020.
GET /api/books?$filter=
title gt 'A' and
available gt false and
price gt 10 and
published_on gt 2020-01-01T00:00:00Z
SQL concettuale
SELECT * FROM Books
WHERE title > 'A'
AND available > 0
AND price > 10
AND published_on > '2020-01-01T00:00:00Z';
ge
Maggiore o uguale a. Restituisce i record in cui il valore di un campo è maggiore o uguale al valore letterale specificato.
In questo esempio si ottengono libri il cui titolo è 'A' o versione successiva, il flag disponibile è true, il prezzo è almeno 10 e la data di pubblicazione è il 1° gennaio 2020.
GET /api/books?$filter=
title ge 'A' and
available ge false and
price ge 10 and
published_on ge 2020-01-01T00:00:00Z
SQL concettuale
SELECT * FROM Books
WHERE title >= 'A'
AND available >= 0
AND price >= 10
AND published_on >= '2020-01-01T00:00:00Z';
lt
Meno di. Restituisce i record in cui il valore di un campo è rigorosamente inferiore al valore letterale specificato.
In questo esempio si ottengono libri il cui titolo viene ordinato prima 'Z'di , il flag disponibile è false, il prezzo è minore di 50 e la data di pubblicazione è precedente al 1° gennaio 2030.
GET /api/books?$filter=
title lt 'Z' and
available lt true and
price lt 50 and
published_on lt 2030-01-01T00:00:00Z
SQL concettuale
SELECT * FROM Books
WHERE title < 'Z'
AND available < 1
AND price < 50
AND published_on < '2030-01-01T00:00:00Z';
le
Minore o uguale a. Restituisce i record in cui il valore di un campo è inferiore o uguale al valore letterale specificato.
In questo esempio si ottengono libri il cui titolo viene ordinato prima o uguale a 'Z', il flag disponibile è true, il prezzo è 100 o minore e la data di pubblicazione è il 1° gennaio 2030.
GET /api/books?$filter=
title le 'Z' and
available le true and
price le 100 and
published_on le 2030-01-01T00:00:00Z
SQL concettuale
SELECT * FROM Books
WHERE title <= 'Z'
AND available <= 1
AND price <= 100
AND published_on <= '2030-01-01T00:00:00Z';
and
AND logico. Combina più condizioni che devono essere tutte vere affinché un record corrisponda.
In questo esempio si ottengono libri in cui il titolo è 'Dune', il flag disponibile è true, il prezzo è minore di 50, la data di pubblicazione è successiva al 1° gennaio 2020 e la classificazione è null.
GET /api/books?$filter=
title eq 'Dune' and
available eq true and
price lt 50 and
published_on ge 2020-01-01T00:00:00Z and
rating eq null
SQL concettuale
SELECT * FROM Books
WHERE title = 'Dune'
AND available = 1
AND price < 50
AND published_on >= '2020-01-01T00:00:00Z'
AND rating IS NULL;
or
OR logico. Combina le condizioni in cui almeno uno deve essere true affinché un record corrisponda.
In questo esempio si ottengono libri in cui il titolo è 'Dune'o il flag disponibile è true oppure il prezzo è maggiore di 20 oppure la data di pubblicazione è precedente al 1° gennaio 2025 o la classificazione è null.
GET /api/books?$filter=
title eq 'Dune' or
available eq true or
price gt 20 or
published_on lt 2025-01-01T00:00:00Z or
rating eq null
SQL concettuale
SELECT * FROM Books
WHERE title = 'Dune'
OR available = 1
OR price > 20
OR published_on < '2025-01-01T00:00:00Z'
OR rating IS NULL;
not
NOT logico. Nega una condizione in modo che i record vengano restituiti solo se la condizione è false.
In questo esempio si ottengono tutti i libri che non hanno il titolo 'Romance', non sono disponibili, non costano meno di $10, non sono stati pubblicati prima del 1° gennaio 2020 e non hanno una classificazione Null.
GET /api/books?$filter=
not (
title eq 'Romance' and
available eq false and
price lt 10 and
published_on lt 2020-01-01T00:00:00Z and
rating eq null
)
SQL concettuale
SELECT * FROM Books
WHERE NOT (
title = 'Romance'
AND available = 0
AND price < 10
AND published_on < '2020-01-01T00:00:00Z'
AND rating IS NULL
);
( ) raggruppamento
Raggruppa sottoespressioni in modo da poter controllare l'ordine di valutazione in filtri complessi.
In questo esempio si ottengono libri in cui il titolo è 'Fiction' o 'SciFi'e il libro è disponibile o a prezzo inferiore a $25 e la data di pubblicazione è successiva al 1° gennaio 2020 e la classificazione è null.
GET /api/books?$filter=
(title eq 'Fiction' or title eq 'SciFi') and
(available eq true or price lt 25) and
published_on ge 2020-01-01T00:00:00Z and
rating eq null
SQL concettuale
SELECT * FROM Books
WHERE (title = 'Fiction' OR title = 'SciFi')
AND (available = 1 OR price < 25)
AND published_on >= '2020-01-01T00:00:00Z'
AND rating IS NULL;
Configurazione di esempio
{
"runtime": {
"pagination": {
"default-page-size": 100,
"max-page-size": 100000
}
},
"entities": {
"Book": {
"source": {
"type": "table",
"object": "dbo.books"
},
"mappings": {
"sku_title": "title",
"sku_price": "price"
},
"relationships": {
"book_category": {
"cardinality": "one",
"target.entity": "Category",
"source.fields": [ "category_id" ],
"target.fields": [ "id" ]
}
}
},
"Category": {
"source": {
"type": "table",
"object": "dbo.categories"
},
"relationships": {
"category_books": {
"cardinality": "many",
"target.entity": "Book",
"source.fields": [ "id" ],
"target.fields": [ "category_id" ]
}
}
}
}
}
Vedere anche
| Concetto | REST | GraphQL | Scopo |
|---|---|---|---|
| Projection | $select | Elementi | Scegliere i campi da restituire |
| Filtraggio | $filter | filtro | Limitare le righe per condizione |
| Ordinamento | $orderby | orderBy | Definire l'ordinamento |
| Dimensioni pagina | $first | primo | Limitare il numero di elementi per pagina |
| Continuazione | $after | dopo | Continuare dall'ultima pagina usando un cursore |
Annotazioni
Le parole chiave REST iniziano con $, seguendo le convenzioni OData.