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

如何将含PATINDEX的MS SQL查询迁移至PySpark SQL引擎

MS SQL转PySpark SQL实现方案

原MS SQL语句核心是处理travel_time字段:找到第一个非0字符的位置,根据字段长度决定是否补前置0,最后拼接:00:00。PySpark SQL没有PATINDEX函数,可用regexp_instr实现等价逻辑,具体代码如下:

SELECT 
    CASE 
        WHEN length(travel_time) = 1 THEN
            concat('0', substring(travel_time, regexp_instr(travel_time, '[^0]', 1, 1)), ':00:00')
        ELSE
            concat(substring(travel_time, regexp_instr(travel_time, '[^0]', 1, 1)), ':00:00')
    END AS travel_time
FROM sampleTable

关键函数替换说明

  • LEN() → length():均用于获取字符串长度
  • PATINDEX('%[^0]%', travel_time) → regexp_instr(travel_time, '[^0]', 1, 1):两者功能一致,返回第一个匹配非0字符的位置
  • PySpark的substring省略长度参数时,默认截取到字符串末尾,和原语句中SUBSTRING(..., LEN(travel_time)+1)的效果完全相同

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 20:30:03