SPLIT_PART
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
SPLIT_PART() 函数将字符串分割成子字符串,并检索从 1 开始的第 n 部分。
SELECT split_part('a,b,c', ',', 2);
create.select(splitPart(val("a,b,c"), ",", 2)).fetch();
结果是
+------------+ | split_part | +------------+ | b | +------------+
方言支持
此示例使用 jOOQ
splitPart(val("a,b,c"), ",", 2)
翻译成以下特定方言的表达式
Aurora MySQL, MariaDB, MemSQL, MySQL
substring(
substring_index('a,b,c', ',', 2),
CASE 2
WHEN 1 THEN 1
ELSE (char_length(substring_index(
'a,b,c',
',',
(2 - 1)
)) + char_length(',') + 1)
END
)
Aurora Postgres, CockroachDB, Databricks, Postgres, Redshift, Snowflake, Trino, Vertica, YugabyteDB
split_part('a,b,c', ',', 2)
BigQuery
split('a,b,c', ',')[ORDINAL(2)]
DB2, Oracle
coalesce(
substr(
'a,b,c',
nullif(
decode(
2,
1,
1,
(nullif(
instr(
'a,b,c',
',',
1,
nullif(
(2 - 1),
0
)
),
0
) + length(','))
),
(length('a,b,c') + 1)
),
coalesce(
(nullif(
instr('a,b,c', ',', 1, 2),
0
) - decode(
2,
1,
1,
(nullif(
instr(
'a,b,c',
',',
1,
nullif(
(2 - 1),
0
)
),
0
) + length(','))
)),
((length('a,b,c') - nullif(
instr(
'a,b,c',
',',
1,
nullif(
(2 - 1),
0
)
),
0
)) - (length(',') - 1))
)
),
''
)
DuckDB
(str_split('a,b,c', ','))[2]
SQLServer
coalesce(
(
SELECT value
FROM string_split('a,b,c', ',', 1)
WHERE ordinal = 2
),
''
)
Teradata
strtok('a,b,c', ',', 2)
ASE, Access, ClickHouse, Derby, Exasol, Firebird, H2, HSQLDB, Hana, Informix, SQLDataWarehouse, SQLite, Sybase
/* UNSUPPORTED */
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!