SQLite中等价于Python的 "'%s %s' % (first_string, second_string)" 的写法是什么?

0 投票
5 回答
3618 浏览
提问于 2025-04-16 05:47

正如标题所说,Python中的 '%s %s' % (first_string, second_string) 在SQLite中有什么类似的写法呢?我知道可以用拼接的方式,比如 first_string || " " || second_string,但这样看起来很丑。

5 个回答

2

注意,你可以创建自己的SQL级别的函数。比如,你可以写一个这样的Python函数:

def format_data(one, two):
    return "%s %s" % (one, two)

然后使用pysqlite的create_function或者APSW的createscalarfunction来告诉SQLite这个函数的存在。这样你就可以进行像下面这样的查询:

SELECT format_data(col1, col2) FROM table WHERE condition;
SELECT * from TABLE where col1 = format_data('prefix', col2);

这样一来,你就可以把格式化的逻辑放在你易于阅读的Python代码中,同时保持SQL简单明了,清楚地表达你的意图。

2

我能理解为什么不喜欢用 first_string || ' ' || second_string 这种写法,但其实它们是等价的。标准的SQL(SQLite在这方面使用的语言)并不是世界上最好看的字符串处理语言。你可以试着把查询结果拿到其他语言里(比如你似乎喜欢的Python),然后在那边进行字符串拼接;通常来说,最好不要在数据库层面处理“展示”相关的内容(而且把拼接的结果用作搜索条件也不是个好主意,这样会让使用索引优化变得不可能!)

0

没有一个明确的答案。

撰写回答