sql - 如何在 psql LIKE 查询正则表达式中使用变量
问题描述
我有一个 psql 数据库,其中包含两个要加入查询的表。表 1(我们可以称为 Articles)有两列:
slug - 这是网站中文章路径的名称
- 示例 1 -“我的文章 1”
- 示例 2 - “我的文章 2”
title - 文章的实际标题
- 示例 1 - “我的第一篇文章”
- 示例 2 - “我的第二篇文章”
表 2(我们称之为 Log)有两列,它们共同表示从服务器发回的请求响应:
url - 这是 GET 请求的 url 路径
- 示例 1 - '/articles/my-article1'
- 示例 2 - '/articles/my-article2'
status - 这是从服务器发回的状态码
- 示例 - '200 OK'
我想返回请求特定文章并返回“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
解决方案
我想出了一个不能完全回答我的问题的解决方案,但这就是我解决它的方法。
select articles.title, count(*)
from articles, log
where substring(log.path,10,100) = articles.slug
and log.status = '200 OK'
group by articles.title
推荐阅读
- javascript - PeerJS 在 Heroku 上部署监听 EACCES:权限被拒绝 0.0.0.0:443
- google-sheets - 填充颜色时Google表格边框/网格线可变粗细
- api - 当我尝试集成谷歌地图时,出现错误
- c - 如果该标头已被隐式包含,是否应将标头包含在文件中?
- postgresql - 如何从 docker 容器中删除初始化脚本
- scala - Kleisli 如何是一个单子变压器?
- pandas - 如果一组行不满足条件,如何删除它们?
- applescript - AppleScript - 从磁盘读取的数组为空
- react-native - React Native FlexBox & Wrap - 如何检测元素是否移动到下一行?
- docker - Jenkins docker slave 配置错误:SSH 服务在 43 秒后没有启动