在PostgreSQL的联接表达式中使用子字符串时出现语法错误
我正在使用Python DB API与postgresql合作 我使用的子字符串表达式在单独使用时工作良好,但当我将其放在join命令的上下文中时,会出现语法错误,在任何教程或其他问题中都找不到解决方法 我用的表达是在PostgreSQL的联接表达式中使用子字符串时出现语法错误,sql,postgresql,join,postgresql-9.5,python-db-api,Sql,Postgresql,Join,Postgresql 9.5,Python Db Api,我正在使用Python DB API与postgresql合作 我使用的子字符串表达式在单独使用时工作良好,但当我将其放在join命令的上下文中时,会出现语法错误,在任何教程或其他问题中都找不到解决方法 我用的表达是 select substring(path, 10, 28) 'my_substr' from log limit 3") 它给出了结果 [('',), ('candidate-is-jerk',), ('goats-eat-googles',)] 这就是我想
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,
但实际上,“路径”与“slug”不匹配,但在子字符串就位的情况下会匹配
我尝试过使用括号,在“my_substr”之前使用“as”,但都给出了相同的语法错误
如何使用正确的语法创建此表达式?除了用于
选择的列列表之外,您不能也不需要在表达式中别名列表达式
您还有一个来自
的杂散
尝试:
最后,如果您使用别名,请不要将它们括在单引号(“
)中,它们用于SQL中的字符串文本。如果需要在别名中使用特殊字符,请使用双引号(“
”),否则根本不使用引号。除了选择的列列表之外,您不能也不需要在表达式中别名列表达式
您还有一个来自
的杂散
尝试:
最后,如果您使用别名,请不要将它们括在单引号(”
)中,它们用于SQL中的字符串文字。如果您需要在别名中包含特殊字符,请使用双引号(“
),否则根本不使用引号(”)。“my_substr”
是该列的别名吗?如果是这样,那么您不需要在更新中使用它。只需删除它。select articles.author,articles.slug from articles join log on articles.slug=substring(log.path,10,28)
字符串常量my_substr
完全错误。假设这是一个别名:如果您需要使用双引号作为标识符。单引号仅用于字符串constantsIs'my\u substr'
列的别名?如果是这样,那么您不需要在更新中使用它。只需删除它。select articles.author,articles.slug from articles join log on articles.slug=substring(log.path,10,28)
字符串常量my_substr
完全错误。假设这是一个别名:如果您需要使用双引号作为标识符。单引号仅用于字符串常量
SELECT articles.author,
articles.slug
FROM articles
INNER JOIN log
ON articles.slug = substring(log.path, 10, 28);