在 PostgreSQL 的连接表达式中使用子字符串时出现语法错误
syntax error when using substring in a join expression with PostgreSQL
我正在使用 Python 数据库 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,
但事实上,'path' 不会匹配 'slug',但在适当的位置它会匹配。
我试过使用括号,在 'my_substr' 之前使用 "as",但都给出相同的语法错误。
如何使用正确的语法创建此表达式?
除了 SELECT
.
的列列表之外,您不能也不需要在表达式中为列表达式添加别名
你那里还有一只流浪狗 FROM
。
尝试:
SELECT articles.author,
articles.slug
FROM articles
INNER JOIN log
ON articles.slug = substring(log.path, 10, 28);
最后,如果您使用别名,请不要将它们括在单引号 ('
) 中,这些用于 SQL 中的字符串文字。如果您需要在别名中包含特殊字符,请使用双引号 ("
),否则根本没有引号(也没有其他任何内容)。
我正在使用 Python 数据库 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,
但事实上,'path' 不会匹配 'slug',但在适当的位置它会匹配。
我试过使用括号,在 'my_substr' 之前使用 "as",但都给出相同的语法错误。
如何使用正确的语法创建此表达式?
除了 SELECT
.
你那里还有一只流浪狗 FROM
。
尝试:
SELECT articles.author,
articles.slug
FROM articles
INNER JOIN log
ON articles.slug = substring(log.path, 10, 28);
最后,如果您使用别名,请不要将它们括在单引号 ('
) 中,这些用于 SQL 中的字符串文字。如果您需要在别名中包含特殊字符,请使用双引号 ("
),否则根本没有引号(也没有其他任何内容)。