Articles

Hoofdletterongevoelige SQL SELECT-queryvoorbeelden

Posted on

Hoofdletterongevoelige SQL SELECT query FAQ: Hoe kan ik SQL SELECT query’s uitvoeren en daarbij hoofd- en kleine letters negeren?

Achtergrond

Toen ik voor het eerst SQL query’s ging schrijven, gebruikte ik Postgresql, en gebruikte ik enkele van hun aangepaste reguliere expressiemogelijkheden om hoofdletterongevoelige query’s uit te voeren. Dat leek een goed idee op dat moment, maar toen ik mijn applicatie probeerde te verhuizen naar een MySQL database, werkte een deel van mijn applicatie niet meer. Na wat debuggen herinnerde ik me dat ik Postgreql-specifieke query-mogelijkheden had gebruikt, dus moest ik dat deel van de code herschrijven om met MySQL te werken.

Om je wat van dat verdriet te besparen, laten de volgende voorbeelden zien hoe je hoofdletter-ongevoelige SQL SELECT queries kunt schrijven met gebruik van de standaard SQL syntaxis. De getoonde queries zouden moeten werken met de meeste, zo niet alle, SQL 92-compatibele databases.

Een zeer belangrijk voorbehoud

Let op dat er één ZEER BELANGRIJK ding te zeggen is over de getoonde aanpak:

Deze queries dwingen uw database om een tabel scan uit te voeren. Dit betekent dat als je een index hebt op de kolom die je doorzoekt, die index niet wordt gebruikt. Dus als je een miljard records in je tabel hebt, zal deze aanpak de database dwingen om naar alle een miljard records te kijken.

Ik plaats geen commentaren van mensen die denigrerende taal gebruiken, maar zoals iemand in de commentaren schreef (tussen de beledigingen door), “het gebruik van een functie om een hele kolom met gegevens om te zetten vereist een tabel scan en moet worden vermeden in een WHERE clausule.”

Hoofdletterongevoelige SQL SELECT: Gebruik bovenste of onderste functies

De SQL-standaardmanier om hoofdletterongevoelige query’s uit te voeren is het gebruik van de SQL upper of lower functies, zoals deze:

select * from users where upper(first_name) = 'FRED';

of deze:

select * from users where lower(first_name) = 'fred';

Zoals je kunt zien, is het patroon om het veld waarin je zoekt in hoofdletters of kleine letters te zetten, en dan je zoekstring ook in hoofdletters of kleine letters te zetten om overeen te komen met de SQL functie die je hebt gebruikt. Dit werkt met alle SQL databases die ik heb gebruikt, inclusief Postgresql, MySQL, en SQL Server.

SQL LIKE queries

Je kunt dezelfde techniek gebruiken om je SQL LIKE queries ook case insensitive te maken. Hier ziet u hoe u de hoofdletterfunctie gebruikt met een SQL LIKE query:

select * from users where upper(first_name) like '%AL%';

en hier ziet u dezelfde hoofdletterongevoelige SQL LIKE query met behulp van de SQL lowercase functie:

select * from users where lower(first_name) like '%al%';

Samenvatting

Ik hoop dat deze case insensitive SQL SELECT query voorbeelden nuttig zijn. Nogmaals, de truc is om wat je zoekt om te zetten naar hoofdletters of kleine letters met behulp van de SQL-functies voor hoofdletters en kleine letters, en dan je zoekstring te laten overeenkomen met dat hoofdlettergebruik.

Geef een reactie

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