【问题标题】:How to trim the characters to a specified length using lpad in SPARK-SQL如何在 SPARK-SQL 中使用 lpad 将字符修剪为指定长度
【发布时间】:2021-11-17 15:44:30
【问题描述】:
spark.sql("select case when length(medicare)>0 then lpad(med,13,'0') else '' end as med from input").show(false)

在上面的查询中,我可以将字符修剪到指定的长度,但是在此之前使用空格将字符调整到指定长度的过程是什么。

样本输入:1234(10 个空格加 1234) 样本输出:1234(9个空格加1234)

无论输入是什么,都应该修剪到 13 个字符。

示例输入:1234567890123(10 个空格加 1234567890123) 示例输出:1234567890123(13 个字符)

请帮我解决这个问题...在此先感谢

【问题讨论】:

    标签: sql dataframe apache-spark apache-spark-sql


    【解决方案1】:

    您可以取最右边的 13 个空格并将其填充到 13:

    select lpad(right(medicare, 13), 13, ' ')
    

    right() 函数只是用来处理medicare 可能超过 13 个字符的情况。

    编辑:

    根据评论:

    select lpad(left(ltrim(medicare), 13), 13, ' ')
    

    【讨论】:

    • 没错,但如果输入是 12345678901234567 那么我得到的输出是 5678901234567 但预期的输出是前 13 个字符 1234567890123 @Gordon Linoff
    • @Vikram 。 . .然后使用left()trim() 而不是right()
    猜你喜欢
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 2015-04-17
    相关资源
    最近更新 更多