Spark SQL如何使用lpad实现固定长度字符串左侧补空格
实现方案
你可以组合使用 Spark SQL 的 right 函数和 lpad 函数实现需求,最终写法如下:
spark.sql("select case when length(med) > 0 then lpad(right(med, 13), 13, ' ') else '' end as med from input").show(false)
逻辑说明
- 第一步用
right(med, 13)提取输入字符串最右侧的13个字符:- 输入长度大于13时,自动截断左侧多余字符,完全匹配你给出的两个截断示例的要求
- 输入长度小于等于13时,返回完整原字符串
- 第二步用
lpad(xxx, 13, ' ')处理长度不足的场景:如果字符串长度小于13,在左侧补空格直到总长度为13;如果已经是13位则直接返回原值
效果验证
- 示例1输入:10个空格 + 1234(总长度14)
处理后得到9个空格 + 1234(总长度13),符合预期 - 示例2输入:10个空格 + 13位数字(总长度23)
处理后得到完整13位数字,符合预期 - 短字符测试输入:
1234(总长度4)
处理后得到9个空格 +1234(总长度13),符合左侧补空格的需求
内容的提问来源于stack exchange,提问作者Only developer
相关产品推荐
相关产品推荐

