【发布时间】:2011-09-28 09:55:57
【问题描述】:
我很好奇如何以最一般的方式正式模拟 SQLite 的 RPAD 和 LPAD 函数。目标是能够做到
LPAD(column, character, repeat)
RPAD(column, character, repeat)
对于非常量表列column、character、repeat。如果character 和repeat 是已知常量,那么这将是一个很好的可行解决方案:
但是如果上面应该这样执行呢:
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 函数一般如何被模拟?我迷失了各种可能性:
一个相关问题:
【问题讨论】:
-
你用什么来连接 SQLite?数据库引擎有一个“插件”架构,您可以在其中定义附加函数 (UDF) 并将它们包含在您的 sql...
-
@Stobor:好点。我正在与一个非官方的JDBC driver 联系。这一切都将在jOOQ(Java 中的 SQL 抽象层)中实现。所以不幸的是,我不能依赖可能的 UDF,只能依赖 SQLite 核心中提供的东西
-
您是为 jOOQ 开发,还是使用 jOOQ api?无论哪种方式,我很确定您可以使用 java UDF...
-
@Stobor:我是 jOOQ 的创建者。因此,我不希望创建对这个特定 JDBC 驱动程序的依赖。但是对于可能正在使用 jOOQ API 的人来说,您的解决方案仍然相当不错。如果可以使用 SQLite 的编译指示发现这些 UDF,那么 jOOQ 应该原生支持它们!
-
没有问题!您的问题主要只是促使我自己弄清楚如何做到这一点。 (我以前在 Python 中做过,所以我怀疑它应该是可能的。)jOOQ 看起来很有趣,祝你好运。
标签: sql sqlite emulation padding