Odata V4 string filter functies

Auteur Koen van der Fluit 3 juni 2022Leestijd: 2 minuten

Ingebouwde string filter functies

Om wat meer functionaliteit te ontdekken naast het standaard filteren, zal er in deze blog ingegaan worden op de Odata V4 string filter functies om je de mogelijkheid te geven een hele nauwkeurige data set terug te geven, zonder dat je daar extra handelingen voor hoeft uit te voeren (reductie van de resultaat set na het initieel ophalen daarvan).

Beschikbare string filter functies

Odata v4 stelt de volgende string filter functies beschikbaar:

  1. concat (voor het opzetten van een aaneenschakeling van tekst)
  2. contains (vereisen dat een eigenschap* / variabele dat het een bepaalde string waarde bevat)
  3. endswith (vereisen dat een eigenschap/ variabele eindigt met een specifieke string)
  4. indexof (vereist dat een meegegeven string op een specifieke positie in een eigenschap/ variabele staat)
  5. startswith (vereisen dat een eigenschap/ variabele start met een specifieke string)
  6. substring (geeft een specifiek stukje van een string terug op basis van een begin en eind index)
  7. tolower (zet alle karakters in een string naar kleine letters voor de vergelijking)
  8. toupper (zet alle karakters in een string naar hoofdletters voor de vergelijking)
  9. trim (verwijderd alle spaties en wit regels/ ruimt)

*Eigenschap refereert naar een eigenschap van een object (bv: De naam van een voertuig)

Voorbeelden

1. tolower

Aanroep: ~/odata/voertuig?$filter=tolower(naam) eq tolower('fiat Punto')

Deze query kijkt of de gegeven zoekterm van een klant (in dit geval 'fiat punto') overeenkomt met de naam van een voertuig. Om te voorkomen dat we geen resultaat terug krijgen omdat 'fiat punto' 'Fiat Punto', zorgen we ervoor dat zowel de naam van de voertuigen als de zoekterm van de klant worden omgezet naar kleine letters voordat ze vergeleken worden.

*Het is mogelijk om de Odata V4 $filter in te stellen zodat hij niet hoofdlettergevoelig zoekt. Gezien de mogelijkheid dat een externe partij dit niet aanbied, kan tolower gebruikt worden om hetzelfde resultaat te verkrijgen. 

2. contains

In mijn optiek biedt contains de meeste meerwaarde als het neerkomt op zoek queries die gebruikt kunnen worden door een klant. Zelfs als hij/zij niet de hele naam van bijvoorbeeld een voortuig invult, kunnen nog steeds relevante resultaten terug worden gegeven:

Aanroep: ~/odata/voertuig?$filter=contains(naam, 'Fiat Punto')

Mogelijke resultaten:

{
    "@odata.context": "~/odata/$metadata#vehicle",
    "value": [
        {
            "name": "Fiat Punto 1.2 Fire 16v"
        },
        {
            "name": "Fiat Punto 1.8 16v"
        },
        {
            "name": "Fiat Punto 1.9 JTD"
        }
    ]
}

 

Bronnen:   1. Odata V4.0.1 documentatie

Open Nieuwsbrief Inschrijving Footer