SPLIT_PARTB
以分隔符字符分割输入字符串并返回第 N 个分段,从 1 开始计数。VARCHAR 实参视为八位字节,而不是 UTF-8 字符。
行为类型
不可变语法
SPLIT_PARTB ( string, delimiter, part-number)
参数
- string
- VARCHAR,要拆分的字符串。
- delimiter
- VARCHAR,分段之间的分隔符。
- part-number
- INTEGER,要返回的部分编号。第一部分是 1,而不是 0。
示例
以下示例返回其输入的第三部分:
=> SELECT SPLIT_PARTB('straße~@~café~@~soupçon', '~@~', 3);
SPLIT_PARTB
-------------
soupçon
(1 row)
波形符仅用于可读性。如果省略,则返回相同结果:
=> SELECT SPLIT_PARTB('straße @ café @ soupçon', '@', 3);
SPLIT_PARTB
-------------
soupçon
(1 row)
如果请求的部分编号大于部分总数,则函数返回空字符串:
=> SELECT SPLIT_PARTB('straße @ café @ soupçon', '@', 4);
SPLIT_PARTB
-------------
(1 row)
=> SELECT SPLIT_PARTB('straße @ café @ soupçon', '@', 4) IS NULL;
?column?
----------
f
(1 row)
如果数据库的区域设置为 BINARY,则 SPLIT_PART 调用 SPLIT_PARTB:
=> SHOW LOCALE;
name | setting
--------+--------------------------------------
locale | en_US@collation=binary (LEN_KBINARY)
(1 row)
=> SELECT SPLIT_PART('123456789', '5', 1);
split_partb
-------------
1234
(1 row)
=> SET LOCALE TO 'en_US@collation=standard';
INFO 2567: Canonical locale: 'en_US@collation=standard'
Standard collation: 'LEN'
English (United States, collation=standard)
SET
=> SELECT SPLIT_PART('123456789', '5', 1);
split_part
------------
1234
(1 row)