casefold()

用于对字符串进行大小写折叠的函数

casefold() 是一个系统函数,用于对提供的输入字符串执行基于排序规则的大小写折叠。

casefold()PostgreSQL 18 中添加。

用法

casefold ( text ) → text

casefold() 只能在 服务器编码UTF8 的数据库中使用。

大小写折叠 (Case folding)

大小写折叠 (Case folding) 类似于大小写转换 (case conversion),但大小写折叠的目的是为了方便进行不区分大小写的字符串匹配,而不是改变其大小写。

变更历史

示例

casefold() 的基本用法示例

postgres=# SELECT casefold('STRAẞE Straße' COLLATE "en-x-icu");
    casefold     
-----------------
 strasse strasse
(1 row)

在这里,德语单词 “Straße” 被分别用大写(包含大写的 )和标准形式(首字母大写)进行了书写,并通过 casefold() 函数转换成了两个相同的值,适用于比较,其中 /ß 都被折叠成了 ss

使用具有相同排序规则的 lower() 函数,ß 都会被折叠成 ß

postgres=# SELECT lower('STRAẞE Straße' COLLATE "en-x-icu");
     lower     
---------------
 straße straße
(1 row)

尝试在非 UTF8 数据库中使用 casefold()

postgres=# CREATE DATABASE iso8859 TEMPLATE template0 ENCODING 'iso-8859-1' LOCALE 'C';
CREATE DATABASE

postgres=# \c iso8859 
You are now connected to database "iso8859" as user "postgres".

iso8859=# SELECT casefold('Ödnis');
ERROR:  Unicode case folding can only be performed if server encoding is UTF8

分类

区域设置和字符集处理字符串操作系统函数

另请参阅

lower(), normalize()

反馈

对于 “casefold()” 的任何评论、建议或更正,请在此处 提交