经过大量阅读和实验后,似乎我想要主要的搜索强度,但第三或相同的排序强度。主要问题:用 H2(或任何其他数据库)可以实现吗?
第二个问题:我是这里唯一的人吗?或者你们中有人也喜欢上述组合吗?一些确认会对我的理智有所帮助。
背景:
看来排序规则只能在创建数据库的一开始就设置。所以我想确保选择正确的一个。我主要考虑这些用例(目前):
用户可以开始输入内容来过滤表格的搜索字段:这里 PRIMARY 似乎是最合适的,以避免丢失任何结果(用户习惯于 Google...)。尽管如此,如果能够为用户提供启用二级或三级排序规则以进行更精确搜索的选项,那就太好了。
排序:当用户单击表列来对内容进行排序时,TERTIARY/IDENTICAL 排序似乎比较合适。这就是我从日常经验中习惯的。
我在这里阅读了官方 H2 文档:http://www.h2database.com/html/commands.html#set_collation http://www.h2database.com/html/commands.html#set_collation。
和这里:http://www.h2database.com/html/datatypes.html#varchar_ignorecase_type http://www.h2database.com/html/datatypes.html#varchar_ignorecase_type更多相关信息:校对强度和本地语言关系 https://stackoverflow.com/questions/3739989/collation-strength-and-local-language-relation
测试sql(来自https://groups.google.com/forum/?fromgroups=#!topic/h2-database/lBksrrcuGdY https://groups.google.com/forum/?fromgroups=#!topic/h2-database/lBksrrcuGdY):
drop all objects;
set collation english STRENGTH PRIMARY;
create table test(name varchar);
insert into test values ('À'), ('Ä'), ('Â'), ('A'), ('à'), ('ä'), ('â'), ('a'), ('àa'), ('äa'), ('âa'), ('aa'), ('B'), ('b');
select * from test where name like 'a' order by name;
select * from test order by name;