Вот вам еще одна неприятность:
X = padToLength
Y = padString
Z = expression
RPAD (для LPAD вместо этого Z объединяется:
select
Z ||
substr(
replace(
replace(
substr(
quote(zeroblob(((X - length(Z) - 1 + length(Y)) / length(Y) + 1) / 2)),
3
),
"'",
""
),
"0",
Y
),
1,
(X - length(Z))
)
Примеры:
sqlite> select "foo" || replace(replace(substr(quote(zeroblob((2 + 1) / 2)), 3, (2 - length("foo"))), "'", ""), "0", "W");
foo
sqlite> select "foo" || replace(replace(substr(quote(zeroblob((7 + 1) / 2)), 3, (7 - length("foo"))), "'", ""), "0", "W");
fooWWWW
Sqlite должен быть довольно легковесным, поэтому я должен несколько не согласиться с вашим комментарием о том, что он «удивлен» отсутствием функциональности.Однако я согласен с тем, что должен быть более простой способ заполнения, хотя бы потому, что существуют функции trim
.