Na konferenci jsem se dozvěděl, jaktože FB 1.5 občas správně provedl UPPER na národních znacích a někdy na to zarytě kašlal. Je to velice prosté – pokud je na sloupci definováno collate, funguje vše dobře. Když se použije defaultní, funkce UPPER nepřevede národní znaky dobře (no vlastně je nechá tak jak jsou
). FB 2 už má toto samozřejmě opraveno.
No a pojďme omrkat ukázku:
- Vytvoříme tabulku:
create table test (col1 varchar(20) character set win1250 collate PXW_CSY, col2 varchar(20) character set win1250);
- Vložíme data:
insert into test values ('ěščřžýáíé_aaa', 'ěščřžýáíé_aaa'); - A zkouška:
select upper(col1), upper(col2) from test;
UPPER UPPER ==================== ==================== ĚŠČŘŽÝÁÍÉ_AAA ěščřžýáíé_AAA
A je hotovo. Funguje. Doufám, že tento malý tip pomůže.
Nevím, kdo na to přišel první, já to však vím od Stefana Heymanna.