有一个带有希腊语单词的Access表,其中包含带有呼吸和重音符号的字母,这些字符分别属于Unicode“希腊语和科普特语”(0300-0370)和“希腊语扩展名”(1F00-1FFF)范围。
问题在于,在所有比较中,该较高范围的字母(希腊扩展名)根本不算,就好像它们不存在一样。带有呼吸标记(ἀ,ἐ,ὑ,ὦ等)的字母会落入该区域。
例如,查询ἄρχομαι(从grc中选择*,其中lemma ='ἄρχομαι')会返回ἄρχομαι和ἔρχομαι以及ρχομαι。
假设桌子上有αὐγής,但没有ἀαγής(请注意呼吸)。查询ἀαγής会返回αὐγής结果,因为字母ὐ和ἀ没有进行校对,就好像引擎正在寻找“αγής”一样。
但是使用strcomp函数可以避免这种情况,这使得比较准确。问题在于,当该列上有唯一索引时,您将无法插入许多被视为重复的单词,因为会忽略希腊扩展字符。在其他情况下,也需要正确的排序规则。
要重现此问题,请在Unicode列上具有唯一索引,然后查看是否可以在其中插入ἄρχομαι和ἔρχομαι或同时插入αὐγής和ἀαγής。
我使用的不是Access,而是Access Runtime 2016 ODBC驱动程序,并通过VBScript对其进行操作,数据库源是一个简单的.mdb文件。
有人说可以为每个数据库设置排序规则(http://www.utteraccess.com/forum/Collate-Access-t1940463.html)。但是怎么办呢? 在删除唯一索引或升级到SQL Server之前?
谢谢!