首页 > 数据库 > mysql教程 > 如何在 PostgreSQL 中实现不区分重音的字符串比较?

如何在 PostgreSQL 中实现不区分重音的字符串比较?

Barbara Streisand
发布: 2025-01-20 12:27:09
原创
165 人浏览过

How Can I Achieve Accent-Insensitive String Comparisons in PostgreSQL?

PostgreSQL 是否支持“忽略重音符号”的排序规则?

PostgreSQL 本身并不像 Microsoft SQL Server 那样原生支持“忽略重音符号”的排序规则。但是,有两种替代方案可用:

使用 Unaccent 模块

Postgres 社区创建了 unaccent 模块,它提供用于去除字符串中重音符号的函数。这可以用来创建自定义的“忽略重音符号”排序规则。

<code class="language-sql">CREATE EXTENSION unaccent;
CREATE COLLATION ignore_accent (locale='en_US', provider='unaccent');</code>
登录后复制

使用 ICU 排序规则 (PostgreSQL 12 或更高版本)

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板