运行 在同一查询中创建的列上的 Postgres 字符串函数
Run Postgres string function on column created in same query
如何使用 Postgres 11 在同一查询中执行一系列字符串函数,其中后续字符串函数调用针对先前执行的字符串函数的结果执行?
我的来源 table labels
看起来像这样:
descr
12345_orange
23456B_yellow
34567C_blue
我想创建一个可以return这个的视图:
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
列不存在。
有人可以帮助我了解如何解决这个问题吗?我希望仅使用一个视图来解决这个问题,以便将来对该结果集的查询变得简单。
此外,如果能深入了解上述方法为何不起作用,我将不胜感激。谢谢!
你必须使用子查询:
SELECT labels_descr,
id,
REGEXP_MATCHES(id, '[A-Za-z]')
FROM (SELECT labels.descr,
SPLIT_PART(labels.descr, '_', 1) as id
FROM labels) AS subq;
或 CTE:
WITH subq AS (
SELECT labels.descr,
SPLIT_PART(labels.descr, '_', 1) as id
FROM labels)
SELECT labels_descr,
id,
REGEXP_MATCHES(id, '[A-Za-z]')
FROM subq;
如何使用 Postgres 11 在同一查询中执行一系列字符串函数,其中后续字符串函数调用针对先前执行的字符串函数的结果执行?
我的来源 table labels
看起来像这样:
descr |
---|
12345_orange |
23456B_yellow |
34567C_blue |
我想创建一个可以return这个的视图:
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
列不存在。
有人可以帮助我了解如何解决这个问题吗?我希望仅使用一个视图来解决这个问题,以便将来对该结果集的查询变得简单。
此外,如果能深入了解上述方法为何不起作用,我将不胜感激。谢谢!
你必须使用子查询:
SELECT labels_descr,
id,
REGEXP_MATCHES(id, '[A-Za-z]')
FROM (SELECT labels.descr,
SPLIT_PART(labels.descr, '_', 1) as id
FROM labels) AS subq;
或 CTE:
WITH subq AS (
SELECT labels.descr,
SPLIT_PART(labels.descr, '_', 1) as id
FROM labels)
SELECT labels_descr,
id,
REGEXP_MATCHES(id, '[A-Za-z]')
FROM subq;