【发布时间】:2021-08-31 02:32:29
【问题描述】:
使用 Postgres 11,如何在同一个查询中执行一系列字符串函数,其中后续的字符串函数调用针对先前执行的字符串函数的结果执行?
我的源表labels 如下所示:
| descr |
|---|
| 12345_orange |
| 23456B_yellow |
| 34567C_blue |
我想创建一个可以返回这个的视图:
| descr | id | rate | name |
|---|---|---|---|
| 12345_orange | 12345 | orange | |
| 23456B_yellow | 23456 | B | yellow |
| 34567C_blue | 34567 | C | blue |
这里一个棘手的部分是desc 列不一致。有时值rate 存在,有时不存在,如第一行所示。解决这个问题的最简单方法似乎是使用一系列两个函数,首先我提取id 的值并将其存储在列中。然后从该列中提取 rate 的值(如果存在)。
这是我正在尝试的查询:
SELECT
labels.descr,
SPLIT_PART(labels.descr, '_', 1) as id
, REGEXP_MATCHES(id, '[A-Za-z]')
FROM
labels
;
当我执行时收到id 列不存在的错误。
有人可以帮助我了解如何解决这个问题吗?我希望仅使用视图来解决此问题,以便将来针对此结果集进行查询。
此外,我非常感谢您能深入了解为什么上述方法不起作用。谢谢!
【问题讨论】:
标签: postgresql string-function