我有UTF-8数据库,其中存储了土耳其语文本数据。土耳其语转换为大写或小写时会出现问题。与其他基于拉丁字符的语言不同,土耳其语对“ i” 和“ I” 字符具有不同的转换规则。这个问题在RDBMS产品中非常普遍。大多数商业的和一些开源的RDBMS解决了这个问题。尽管Firebird在土耳其开发人员中非常受欢迎,但事实并非如此。顺便说一句,当数据库字符集为ISO8859-9(土耳其语)时,这不是问题。
“ i” ->大写字母-> “İ”
“ı” ->大写-> “我”
据我所知,firebird没有unicode / turkish的排序规则。
因此,应将“ ikna” 大写为“ IKNA” ,将其设置为“İKNA”
有人针对这种情况有解决方法吗?具体来说,我想对文本数据进行大小写刺激的 Like 搜索。
内容丰富 http://www.moserware.com/2008/02/does-your-code-pass-turkey-test.html
答案 0 :(得分:0)
Ceyhun,您尝试过将字符集WIN1254整理为pxw_turk吗?
create table test
(
recid integer,
name_ varchar(50) character set WIN1254 collate pxw_turk
);
commit;
insert into test(name_, recid) values('İsmail Ilgın', 1);
select
name_,
upper(name_),
lower(name_)
from test;
或使用域
create domain mydomain as varchar(50) character set WIN1254 collate pxw_turk;
create table test
(
recid integer,
name_ mydomain
);
commit;
insert into test(name_, recid) values('İsmail Ilgın', 1);
select
name_,
upper(name_),
lower(name_)
from test;
结果是:
'İsmailIlgın''İSMAİLILGIN''ismailılgın'