首页 > 解决方案 > 如何在 psql LIKE 查询正则表达式中使用变量

问题描述

我有一个 psql 数据库,其中包含两个要加入查询的表。表 1(我们可以称为 Articles)有两列:

表 2(我们称之为 Log)有两列,它们共同表示从服务器发回的请求响应:

我想返回请求特定文章并返回“200 OK”状态代码的次数。

我的问题:我想将 Articles.slug 变量与 where 子句中的 Log.url 变量进行匹配,但我不知道如何在正则表达式中使用变量。现在我正在努力将 slug 与路径匹配,这是我到目前为止的代码:

SELECT articles.title, articles.slug, log.path
FROM articles, log
WHERE log.path like '/articles/' + articles.slug
and log.status = '200 OK'

我知道我的 WHERE 子句不正确,这就是我要找的。如何将完整的 log.path 字符串与带有变量articles.slug 的串联字符串匹配。

抱歉,如果其中任何一个不清楚或看起来很愚蠢,我是第一次学习 SQL <3

标签: sqlpostgresqlsql-like

解决方案


我想出了一个不能完全回答我的问题的解决方案,但这就是我解决它的方法。

select articles.title, count(*)
from articles, log
where substring(log.path,10,100) = articles.slug
and log.status = '200 OK'
group by articles.title

推荐阅读