#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()
.