我很好奇如何以最一般的方式为sqlite模拟rpad和lpad函数。目标是能够做到
LPAD(column, character, repeat)
RPAD(column, character, repeat)
对于非常量表列
column
、character
、repeat
。如果character
和repeat
是已知的常数,那么这将是一个好的、可行的解决方案: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)
);