SQLite中等价于Python的 "'%s %s' % (first_string, second_string)" 的写法是什么?
正如标题所说,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
没有一个明确的答案。