Postgres 11 を使用して、同じクエリで一連の文字列関数を実行するにはどうすればよいですか。その後の文字列関数呼び出しは、以前に実行された文字列関数の結果に対して実行されますか?
ソーステーブルlabelsは次のようになります。
| 説明 |
|---|
| 12345_オレンジ |
| 23456B_イエロー |
| 34567C_ブルー |
これを返すことができるビューを作成したいと思います:
| 説明 | ID | レート | 名前 |
|---|---|---|---|
| 12345_オレンジ | 12345 | オレンジ | |
| 23456B_イエロー | 23456 | B | 黄色 |
| 34567C_ブルー | 34567 | ハ | 青い |
ここで注意が必要なのは、列descが一貫していないことです。最初の行に示すように、値rateが存在する場合と存在しない場合があります。これを解決する最も簡単な方法は、最初に値を抽出idして列に格納する一連の 2 つの関数を使用することです。次に、その列から の値を抽出しますrate(存在する場合)。
これが私が試みているクエリです:
SELECT
labels.descr,
SPLIT_PART(labels.descr, '_', 1) as id
, REGEXP_MATCHES(id, '[A-Za-z]')
FROM
labels
;
idそれを実行すると、列が存在しないというエラーが表示されます。
誰かがこの問題を解決する方法を理解するのを手伝ってくれますか? この結果セットに対する将来のクエリを簡単にするために、ビューのみを使用してこれを解決したいと考えています。
さらに、上記が機能しない理由についての洞察をいただければ幸いです。ありがとうございました!