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

Databricks拆分字符串遇SPLIT_part未定义错误,求提取括号内代码

在Databricks中提取字符串括号内内容(替代报错的SPLIT_part函数)

Spark SQL(Databricks基于Spark)并不支持PostgreSQL的SPLIT_part函数,这就是你报错的原因。以下是几种Spark原生的方法,可以提取patologia列中括号内的代码(比如从LESOES DO OMBRO (M75)中得到M75):

方法1:正则提取(最推荐,适配多数场景)

用regexp_extract直接匹配括号内的内容,逻辑清晰且容错性强:

SELECT
  patologia,
  regexp_extract(patologia, '\\((.*?)\\)', 1) AS codigo_patologia
FROM your_table_name;
  • 正则表达式\\((.*?)\\):匹配成对的括号,(.*?)捕获括号内的任意内容(非贪婪匹配,避免多个括号时出错)
  • 第三个参数1表示取第一个捕获组的结果,也就是括号内的内容

方法2:拆分字符串+取元素

用split按括号拆分字符串,再用element_at取目标元素(Spark 2.4及以上版本支持):

SELECT
  patologia,
  element_at(split(patologia, '\\(|\\)'), 2) AS codigo_patologia
FROM your_table_name;
  • split(patologia, '\\(|\\)')会把示例字符串拆分为数组["LESOES DO OMBRO ", "M75", ""]
  • element_at(..., 2)取数组的第二个元素,即括号内的内容

方法3:嵌套截取字符串

用两次substring_index实现截取:

SELECT
  patologia,
  substring_index(substring_index(patologia, '(', -1), ')', 1) AS codigo_patologia
FROM your_table_name;
  • 第一次substring_index(patologia, '(', -1)取(之后的部分,得到M75)
  • 第二次substring_index(..., ')', 1)取)之前的部分,最终得到M75

如果部分patologia值不含括号,上述方法都会返回空字符串或对应无效部分,你可以根据实际数据情况调整逻辑(比如加CASE WHEN判断)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:50:28