Autor Téma: SQLite - prevod stĺpca s UFT8 textom na malé písmená  (Přečteno 487 krát)

Offline Slavomir

  • Mladík
  • **
  • Příspěvků: 77
  • Karma: 0
    • Verze Delphi: 10.3 CE, Lazarus 2.0.10
    • RQ Money
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.
« Poslední změna: 06-11-2022, 17:18:02 od Slavomir »
IDE - Lazarus, Delphi
Program - RQ Money

Offline Jan Fiala

  • Hrdina
  • ****
  • Příspěvků: 316
  • Karma: 4
    • Verze Delphi: 10.4.1
    • PSPad editor
Re:SQLite - prevod stĺpca s UFT8 textom na malé písmená
« Odpověď #1 kdy: 07-11-2022, 06:56:55 »
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

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3467
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:SQLite - prevod stĺpca s UFT8 textom na malé písmená
« Odpověď #2 kdy: 07-11-2022, 07:54:26 »
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.

Offline Slavomir

  • Mladík
  • **
  • Příspěvků: 77
  • Karma: 0
    • Verze Delphi: 10.3 CE, Lazarus 2.0.10
    • RQ Money
Re:SQLite - prevod stĺpca s UFT8 textom na malé písmená
« Odpověď #3 kdy: 08-11-2022, 05:20:38 »
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.
IDE - Lazarus, Delphi
Program - RQ Money