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中文網其他相關文章!