sql - 在 PostgreSQL 的连接表达式中使用子字符串时出现语法错误
问题描述
我正在使用 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,
但事实上,'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 中的字符串文字。如果您需要在别名中包含特殊字符,请使用双引号 ( "
),否则根本不需要引号(以及其他任何内容)。
推荐阅读
- c# - c#如何获取输入缓冲区属性值作为字符串
- gps - 是否可以使用 GPS 或加速度计确定车辆是否在斜坡或山坡上后退?
- terraform - 在 aws_route53_record terrafrom 资源中使用“计数”
- c - 我的函数对数组没有任何作用
- vue.js - Vue.js:是否有可能拥有 SFC 工厂?
- postgresql - 当可能存在可能产生冲突的并发插入时,如何在 postgres 中进行条件插入?
- c++ - 如何修改我的代码以避免左移警告?
- javascript - 如何使过滤器列表适用于对象内的对象?它适用于其他数据类型
- groovy - 根据条件使用项目 - Jmeter
- python - 如何在kivy中使用weakref迭代不同的ids级别