PostgreSQL 本身并不像 Microsoft SQL Server 那样原生支持“忽略重音符号”的排序规则。但是,有两种替代方案可用:
Postgres 社区创建了 unaccent 模块,它提供用于去除字符串中重音符号的函数。这可以用来创建自定义的“忽略重音符号”排序规则。
<code class="language-sql">CREATE EXTENSION unaccent; CREATE COLLATION ignore_accent (locale='en_US', provider='unaccent');</code>
PostgreSQL 12 引入了对 ICU 排序规则的支持,这使得不区分大小写和不区分重音符号的组合和排序成为可能。但是,ICU 排序规则存在性能损失,并且不能与某些操作(如模式匹配)一起使用。
<code class="language-sql">CREATE COLLATION ignore_accent (provider = icu, locale = 'und-u-ks-level1-kc-true', deterministic = false);</code>
对于一般用途,unaccent 模块更高效,建议用于创建“忽略重音符号”的查询。它允许函数内联和表达式索引。
以上是如何在 PostgreSQL 中实现不区分重音的字符串比较?的详细内容。更多信息请关注PHP中文网其他相关文章!