FreePascal (FPC) a Lazarus > Obecné

SQLite - prevod stĺpca s UFT8 textom na malé písmená

(1/1)

Slavomir:
Ahojte,
importujem v SQLite tabuľku z jednej databázy do druhej (mám ju pripojenú cez ATTACH), pričom potrebujem skonvertovať celý jeden stĺpec s UTF8 znakmi na malé písmená.
Dá sa konvertovať jedným príkazom celý stĺpec plný textu (ale včítane UTF8 znakov !) na malé písmená naraz ?
Vzhľadom na obmedzenie príkazu LOWER(), ktorý konvertuje len ASCII znaky, si to viem urobiť len okľukou cez dotaz SELECT, uložiť záznamy do nejakého textového reťazca a potom spätným príkazom UPDATE s konverziou textu cez funkciu AnsiLowerCase(), ale hľadám rýchlejšie riešenie  ;D.
Ďakujem.

Jan Fiala:
Kolik je tam záznamů a jak často se import provádí?
Pokud je to častější napiš si utilitku, která se připojí, projde to a záznam po záznamu to nainsertuje do cílové tabulky.

Další možností je použít UPDATE
Nejprve LOWER()
pak postupně REPLACE(), kde budeš přepisovat jednotlivé znaky

pf1957:
Nevim, co presne resis, ale my z duvodu rychlosti a nezavislosti na konkretnim typu RDBMS jsme podobne konverze delali hned na vstupu pri porizovani dat na strane klienta a do DB to ukladali do dvou ruznych atributu (sloupecku): jeden s nativnim tvarem, druhy treba lowercased a jeste treba s orezanymi nabodenicky apod.

Jinak pro SQLite existuje ICU extension, ale s tim zkusenosti nemam.

Slavomir:
Záznamov je v databáze cca 20 tisíc a import sa robí veľmi zriedkavo. Takže to zatiaľ riešim výberom údajov z celého stĺpca z jednej tabuľky do TStringListu, tam to skonvertujem a vložím do inej tabuľky. Netrvá to dlho, len som chcel optimalizovať kód čo najviac (ako som písal - jedným SQL príkazom).
Prepisovať jednotlivé znaky mi pripadá komplikovanejšie, rovnako ako študovať iné doplnkové funkcie (ICU extension).
I tak vďaka za tipy.

Navigace

[0] Seznam témat

Přejít na plnou verzi