PostgreSQL Как вырезать некоторую информацию из столбца, который является строкой - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть столбец File_name. В этом столбце мне нужно извлечь 2 информации: Project и Date в виде целого числа: как я могу сделать это в Postgresql?

File_name: [UFC_LOC-1001]_IGT_MISO_20191212_115w_20191213 (en-us - de-de)

, поэтому мне нужно иметь MISO (проект (может быть 3 или 4 вздоха) )) и следующая дата 20191212 (int).

1 Ответ

0 голосов
/ 22 апреля 2020

Может быть

SELECT regexp_matches('[UFC_LOC-1001]_IGT_MISO_20191212_115w_20191213 (en-us - de-de)', '([A-Z]{3,4})_([0-9]{8})');
┌─────────────────┐
│ regexp_matches  │
╞═════════════════╡
│ {MISO,20191212} │
└─────────────────┘
(1 row)

SELECT r[1] as project, r[2]::date as date 
  FROM (SELECT regexp_matches('[UFC_LOC-1001]_IGT_MISO_20191212_115w_20191213 (en-us - de-de)', '([A-Z]{3,4})_([0-9]{8})') r) s;
┌─────────┬────────────┐
│ project │    date    │
╞═════════╪════════════╡
│ MISO    │ 2019-12-12 │
└─────────┴────────────┘
(1 row)

другой вариант:

SELECT (regexp_matches(file_name, '([A-Z]{3,4})_[0-9]{8}'))[1] AS project,
       (regexp_matches(file_name, '[A-Z]{3,4}_([0-9]{8})'))[1]::date AS date 
  FROM data;
┌─────────┬────────────┐
│ project │    date    │
╞═════════╪════════════╡
│ MISO    │ 2019-12-12 │
└─────────┴────────────┘
(1 row)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...