Как обрезать символы до заданной длины с помощью lpad в SPARK-SQL

#sql #dataframe #apache-spark #apache-spark-sql

Вопрос:

 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 символов)

Пожалуйста, помогите мне в этом…Заранее спасибо

Ответ №1:

Вы можете взять самые правые 13 пробелов и добавить их к 13:

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

right() Функция предназначена только для обработки случая, когда medicare может быть более 13 символов.

Редактировать:

На основании комментария:

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

Комментарии:

1. это верно, но если ввод 12345678901234567, то я получаю вывод как 5678901234567, но ожидаемый результат-первые 13 символов 1234567890123 @Гордон Линофф

2. @Vikram . . . Тогда используйте left() с trim() , а не right() .