我正在使用Python DB API处理postgresql。
我正在使用的子字符串表达式单独运行时可以很好地工作,但是当我将其放在连接命令的上下文中时,会遇到语法错误,并且在任何教程或其他指南中都找不到解决方案问题。
我正在使用的表达式是
select substring(path, 10, 28) 'my_substr' from log limit 3")
它给出结果
[('',), ('candidate-is-jerk',), ('goats-eat-googles',)]
这就是我想要的。 (它会修剪此路径中的/ articles /。)
我要放入其中的上下文是一个联接表达式,如下所示:
select articles.author, articles.slug
from articles
join log on articles.slug = substring(path, 10, 28) 'my_substr'
from log
如果我不需要子字符串,则表达式为
join log on articles.slug = log.path,
但实际上,“路径”与“子弹”不匹配,但是在适当的位置有子字符串。
我尝试使用方括号,在“ my_substr”之前使用“ as”,但是都给出相同的语法错误。
如何使用正确的语法创建该表达式?
答案 0 :(得分:2)
除了SELECT
的列列表之外,您不能也不需要在表达式中为列表达式加上别名。
您那里也有流浪FROM
。
尝试:
SELECT articles.author,
articles.slug
FROM articles
INNER JOIN log
ON articles.slug = substring(log.path, 10, 28);
最后,如果您使用别名,请不要将它们括在单引号('
)中,它们是用于SQL中的字符串文字。如果您需要在别名中包含特殊字符,请使用双引号("
),否则请完全不要使用引号。