Выдает регулярное выражение usng для разделенной строки из поля с последующим использованием условий регистра на основе логического результата - PullRequest
0 голосов
/ 17 мая 2019

Здравствуйте, я хотел бы использовать оператор case на основе красного смещения. Я могу разобрать регулярное выражение, а затем принять решение оттуда.

       CASE
         WHEN regexp_like (SPLIT_PART(eel_line,',',21), '^1z.*') THEN SPLIT_PART(eel_line,',',21)
         ELSE SPLIT_PART(eel_line,',',18)
       END AS trackno,

Ошибка, которую я получаю: функция regexp_like (text, "unknown") не существует;

Мне бы хотелось, чтобы SPLIT_PART (eel_line, ',', 21) совпадало с регулярным выражением, в противном случае мне нужен другой индекс. Как видно из кода, большое спасибо.

1 Ответ

0 голосов
/ 17 мая 2019

RedShift основан на Postgres. Используйте ~ для сопоставления с образцом:

WHEN SPLIT_PART(eel_line, ',', 21) ~ '^1z.*') THEN SPLIT_PART(eel_line, ',', 21)

Вам не нужно .*. На самом деле, вам вообще не нужны регулярные выражения:

WHEN SPLIT_PART(eel_line, ',', 21) LIKE '1z%') THEN SPLIT_PART(eel_line, ',', 21)
...