Problem:
Du vill ändra lite text till gemener i SQL.
Exempel:
Vår databas har en tabell som heter item
med data i följande kolumner:id
, code
, och wood_type_used
. Fallet är inkonsekvent i data i wood_type_used
kolumn. Vi vill att alla träsorter ska visas med gemener.
id | kod | wood_type_used |
---|---|---|
1 | 000237PSH | Tall |
2 | 000115MCH | MAHOGNY |
3 | 000073BTB | björk |
4 | 00068WBD | wAlnUt |
5 | 00055BSH | Björk |
Lösning:
Vi använder LOWER()
funktion:
SELECT code, LOWER(wood_type_used) FROM item;
Frågan returnerar objekt med träsorter skrivna med gemener:
kod | wood_type_used |
---|---|
000237PSH | tall |
000115MCH | mahogny |
000073BTB | björk |
00068WBD | valnöt |
00055BSH | björk |
Diskussion:
När du vill att textdata från din SQL-databas ska visas med gemener, använd LOWER()
fungera. Denna funktion tar som argument en sträng eller namnet på en kolumn vars textvärden ska visas med gemener. Den returnerar en version av den ursprungliga textdatan där varje stor bokstav ersätts med motsvarande gemen och resten av tecknen förblir oförändrade.
Men att visa text på ett enhetligt sätt är inte den enda tillämpningen av LOWER()
fungera. Du kan också ha nytta av det i skiftlägesokänsliga frågor, det vill säga frågor där det är irrelevant hur textdatan du letar efter ursprungligen är skiftad.
Till exempel, i vår exempeltabell ovan, kanske du vill hitta alla föremål gjorda av björkträ. Eftersom värden för träsorten inte är konsekvent kapslade, fråga bara efter alla rader som har "birch
’ i wood_type_used
kolumnen skulle bara returnera en rad, även om två av de listade produkterna uppenbarligen är gjorda av björk. Det är här LOWER()
kommer in:
SELECT * FROM item WHERE LOWER(wood_type_used) = ‘birch’;
En sådan fråga kommer att returnera alla rader med någon form av "björk"-sträng i wood_type_used
kolumn, oavsett hur värdena är skiftade i originaldata. Kom ihåg att skriva texten du söker efter med gemener också.