SQLite3 ei osaa tehdä caseinsensitive-vertailua skandinaavisilla merkeillä eli esim. UPPER('BÄÄ') == UPPER('bää') on sen mielestä epätosi. Jotta saa asiat toimimaan myös skandeilla haluamallaan tavalla pitää tehdä oma lajittelufunktio. Esim. seuraavassa käytetään yhtä sqliten sisäänrakennetuista collation (lajittelu) -funktioista ja yritetään hakea kaikki käyttäjät joiden etunimi olisi esim. Källe tai källe, mutta tämä ei toimi eikä auta vaikka käyttäisi upper-funktiota:
SELECT * FROM user WHERE etunimi = 'källe' COLLATE NOCASE
tämän NOCASE-funktion voi siis korvata omalla python-funktiolla, jonka jälkeen edellä oleva kysely alkaa toimia.
def vertaa_nocase(string1, string2): if string1.lower() == string2.lower(): return 0 elif string1.lower() < string2.lower(): return 1 else: return -1
#annetaan sqlitelle edellä luotu vertailufunktio con.create_collation("vertaa_nocase", vertaa_nocase)
cur.execute("SELECT x FROM user WHERE etunimi = 'källe' COLLATE vertaa_nocase")
Ohje: https://appro.mit.jyu.fi/ties4080/ohjaus/ohjaus3/#sqlitecase