You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SQL按多个分隔符拆分字符串?

按多分隔符拆分SQL字符串的解决方案

你的问题出在分隔符的写法上:直接拼接'-'和'_'会让split把'-_'当作一个完整的分隔符来匹配,而不是二选一。大多数SQL引擎的split函数支持正则表达式,用正则字符类[-_]就能同时匹配'-'或'_'。

通用正则写法(适用于Hive、Spark SQL、Trino等支持正则split的引擎)

SELECT 
  client_id,
  split(client_id, '[-_]')[0] AS col1,
  split(client_id, '[-_]')[1] AS col2
FROM mytbl;

不同引擎的适配写法

PostgreSQL

PostgreSQL没有内置split函数,可用regexp_split_to_array直接按正则拆分:

SELECT 
  client_id,
  (regexp_split_to_array(client_id, '[-_]'))[1] AS col1,
  (regexp_split_to_array(client_id, '[-_]'))[2] AS col2
FROM mytbl;

MySQL

MySQL的split函数支持有限,可先统一替换分隔符再拆分:

SELECT 
  client_id,
  SUBSTRING_INDEX(REPLACE(client_id, '-', '_'), '_', 1) AS col1,
  SUBSTRING_INDEX(REPLACE(client_id, '-', '_'), '_', -1) AS col2
FROM mytbl;

这样不管是blah_blah还是bleh-bleh格式的client_id,都能拆分成对应的col1和col2。

内容的提问来源于stack exchange,提问作者Desert Spider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 04:59:54