首頁 > 資料庫 > mysql教程 > 如何在 PostgreSQL 中實現不區分重音的字串比較?

如何在 PostgreSQL 中實現不區分重音的字串比較?

Barbara Streisand
發布: 2025-01-20 12:27:09
原創
164 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板