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)

另请参阅