- 类别:
:doc:`/sql-reference/functions-string`(通用)
SPLIT_PART¶
在指定字符处拆分给定的字符串,并返回请求的部分。
要返回指定字符之后的所有字符,可以使用 POSITION 和 SUBSTR 函数。有关示例,请参阅 返回电子邮件地址、电话和日期字符串的子字符串。
小技巧
您可以使用搜索优化服务,提高用于调用此函数的查询的性能。有关详细信息,请参阅 搜索优化服务。
- 另请参阅:
语法¶
SPLIT_PART(<string>, <delimiter>, <partNumber>)
实参¶
string
要拆分为多个部分的文本。
delimiter
表示要拆分的分隔符的文本。
partNumber
请求拆分的一部分(从 1 开始)。
如果该值为负数,则从字符串末尾向后计数。
返回¶
此函数返回 VARCHAR 类型的值。
如果任何实参为 NULL,则返回 NULL。
使用说明¶
如果
partNumber
超出范围,则返回的值为空字符串。如果字符串以分隔符开始或终止,则系统将分隔符之前或之后的空格分别视为拆分结果的有效部分。有关示例,请参阅下面的 示例 部分。
如果
partNumber
为 0,则将其视为 1。换句话说,它获取拆分的第一个元素。为了避免混淆索引是从 1 开始还是从 0 开始,Snowflake 建议避免使用 0 作为 1 的同义词。如果分隔符是空字符串,则拆分后,返回的值是输入字符串(字符串未拆分)。
排序规则详细信息¶
The collation specifications of all input arguments must be compatible.
此函数不支持以下排序规则规范:
示例¶
此示例显示了不同 partNumber
值返回的部分。
SELECT column1 part_number_value, column2 portion
FROM VALUES
(0, SPLIT_PART('11.22.33', '.', 0)),
(1, SPLIT_PART('11.22.33', '.', 1)),
(2, SPLIT_PART('11.22.33', '.', 2)),
(3, SPLIT_PART('11.22.33', '.', 3)),
(4, SPLIT_PART('11.22.33', '.', 4)),
(-1, SPLIT_PART('11.22.33', '.', -1)),
(-2, SPLIT_PART('11.22.33', '.', -2)),
(-3, SPLIT_PART('11.22.33', '.', -3)),
(-4, SPLIT_PART('11.22.33', '.', -4));
+-------------------+---------+
| PART_NUMBER_VALUE | PORTION |
|-------------------+---------|
| 0 | 11 |
| 1 | 11 |
| 2 | 22 |
| 3 | 33 |
| 4 | |
| -1 | 33 |
| -2 | 22 |
| -3 | 11 |
| -4 | |
+-------------------+---------+
此示例返回本地主机 IP 地址 127.0.0.1
的第一部分和最后一部分:
SELECT SPLIT_PART('127.0.0.1', '.', 1) AS first_part,
SPLIT_PART('127.0.0.1', '.', -1) AS last_part;
+------------+-----------+
| FIRST_PART | LAST_PART |
|------------+-----------|
| 127 | 1 |
+------------+-----------+
此示例返回由竖线分隔的字符字符串的第一部分和第二部分。请注意,分隔符是输入字符串的第一部分,因此拆分后的第一个元素是空字符串。
SELECT SPLIT_PART('|a|b|c|', '|', 1) AS first_part,
SPLIT_PART('|a|b|c|', '|', 2) AS last_part;
+------------+-----------+
| FIRST_PART | LAST_PART |
|------------+-----------|
| | a |
+------------+-----------+
此示例显示了一个多字符分隔符:
SELECT SPLIT_PART('aaa--bbb-BBB--ccc', '--', 2) AS multi_character_separator;
+---------------------------+
| MULTI_CHARACTER_SEPARATOR |
|---------------------------|
| bbb-BBB |
+---------------------------+
以下示例显示,如果分隔符为空字符串,则拆分后仍然只有一个字符串:
SELECT column1 part_number_value, column2 portion
FROM VALUES
(1, split_part('user@snowflake.com', '', 1)),
(-1, split_part('user@snowflake.com', '', -1)),
(2, split_part('user@snowflake.com', '', 2)),
(-2, split_part('user@snowflake.com', '', -2));
+-------------------+--------------------+
| PART_NUMBER_VALUE | PORTION |
|-------------------+--------------------|
| 1 | user@snowflake.com |
| -1 | user@snowflake.com |
| 2 | |
| -2 | |
+-------------------+--------------------+