我很好奇如何以最一般的方式为sqlite模拟rpad和lpad函数。目标是能够做到

LPAD(column, character, repeat)
RPAD(column, character, repeat)

对于非常量表列columncharacterrepeat。如果characterrepeat是已知的常数,那么这将是一个好的、可行的解决方案:
http://verysimple.com/2010/01/12/sqlite-lpad-rpad-function/
但是如果上面的执行方式是这样的呢:
SELECT LPAD(t.column, t.character, t.repeat) FROM t
SELECT LPAD(t.column, some_function(), some_other_function()) FROM t
SELECT LPAD(t.column, :some_bind_variable, :some_other_bind_variable) FROM t

LPAD函数通常如何模拟?我迷失在可能性之中:
http://www.sqlite.org/lang_corefunc.html
相关问题:
How to emulate REPEAT() in SQLite

最佳答案

@user610650解决方案的一个简单版本,使用hex()而不是quote(),除了字符填充之外还可以使用字符串填充:

X = padToLength
Y = padString
Z = expression

select
    Z ||
    substr(
        replace(
            hex(zeroblob(X)),
            '00',
            Y
        ),
        1,
        X - length(Z)
    );

10-08 00:06