MySQL en FIND_IN_SET – komma gescheiden zoeken

Syntax: FIND_IN_SET(string, waarde);

Zoekt string in waarde en geeft de positie hiervan weer. waarde is een komma gescheiden lijst. Deze functie geeft een 0 (nul) wanneer string niet in waarde bestaat of indien waarde leeg is. Geeft een NULL waarde wanneer een van beide argumenten van de waarde NULL is. Gebruik geen komma in het eerste argument, dit geeft namelijk problemen!

Veel webdevelopers slaan waardes van keuzeformulieren in dezelfde kolom op. Bijvoorbeeld de primary keys (id’s) van categorieen voor een gebruiker van je website. Deze worden bijvoorbeeld opgeslagen in een varchar kolom met een lengte van 255. Een patroon kan er als ongeveer zo uitzien: 1,2,5,10,17,22,23. Nu is het erg lastig om alle gebruikers op te halen met de categorie “2”. Gebruik je de query:

Dan worden de waarden 2,22 en 23 ook opgehaald.

Een fijne functie in MySQL om dit probleem te omzeilen is de FIND_IN_SET() functie. In principe wordt de FIND_IN_SET() functie gebruikt met SET datatypes, maar kan ook gebruikt worden met andere datatypen waar de waarde door middel van een komma gescheiden annotatie wordt opgeslagen. De FIND_IN_SET() functie retourneerd de positie van een string waarde wanneer deze beschikbaar is (als substring) binnen een string. Een 0 (nul) wordt geretourneerd wanneer de waarde waarop gezocht wordt niet bestaat in de string. Bijvoorbeeld:

In de bovenstaande syntax is de “2” de gebruikte string (of zoekterm) om te vinden in de waarde binnen de categories-kolom van de user tabel.

Je kunt FIND_IN_SET() ook gebruiken binnen een WHERE clause, als volgt:

Heb je nog vragen en/of opmerkingen over deze post? Laat ze dan achter door middel van onderstaand formulier.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *