我想知道 Oracle Unicode 数据库是否以规范化形式存储数据,或者 Oracle 保证从查询返回的文本是否采用某种规范化形式。
这似乎应该是一个容易回答的问题,但我在网上找不到有关它的信息——这让我认为答案是否定的。有没有人有这方面的瘦身?
请注意有关规范等效性的 Oracle 文档所说的内容:
规范等价是多语言归类的一个属性,描述了等价的代码点序列是如何排序的。如果在特定的多语言归类中应用了规范等价,则规范等价的字符串被视为相等。
一个 Unicode 代码点可以等同于一系列基本字母代码点加上变音符号代码点。这称为 Unicode 规范等价。例如,
ä等于它的基本字母a和变音符号。语言标志CANONICAL_EQUIVALENCE = TRUE表示 Unicode 中定义的所有规范对等规则都需要应用于特定的多语言归类。Oracle 数据库定义的多语言归类包括规范等价标志的适当设置。FALSE如果所有数据都处于组合形式,您可以将标志设置为加快比较和排序功能。
所以,基本上,Oracle 有一个CANONICAL_EQUIVALENCE标志,您可以配置它来控制 Oracle 在排序期间如何比较和考虑相同 Unicode 逻辑字符的分解/组合形式。
该标志的存在意味着甲骨文不会当它存储的数据自动标准化(合成或分解)Unicode字符。如果 Oracle 在存储数据时确实自动执行了规范化,那么使用该标志将是无意义和无用的。