Как я могу разделить строку на две на основе символа между ними, используя REGEXP_EXTRACT?

Мне нужно разделить строку на две на основе символа, и мне нужно сделать это без использования команды SPLIT.

Что я имею:

нить
фрукты = апельсин
фрукты = яблоко
овощ = лук

Что мне нужно:

разделенная строка1разделенная строка2
фруктыапельсин
фруктыяблоко
овощлук

Как я могу решить это с помощью REGEXP_EXTRACT?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
73
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Рассмотрим приведенный ниже запрос для вашего требования:

SELECT
  REGEXP_EXTRACT(string, r'^[a-zA-Z]+') AS splitstring1,
  REGEXP_EXTRACT(string, r'[a-zA-Z]+$') AS splitstring2
FROM
  `project.dataset.table`;

Результат:

Обновлено: на основе вашего нового требования:

  • Пример ввода: fruit=apples and oranges

  • Ожидаемый результат: "fruit" in one column and "apples and oranges" in another column

Рассмотрим следующий запрос:

SELECT
  REGEXP_EXTRACT(string, r'^[a-zA-Z0-9 ]+') AS splitstring1,
  REGEXP_EXTRACT(string, r'[a-zA-Z0-9 ]+$') AS splitstring2
FROM
  `project.dataset.table`;

Результат:

Привет @Vishal K. Спасибо за ответ. Это решает для алфавитов, мы можем добавить и для чисел. Но что, если между ними есть пробелы?

Thivagar Moorthy 17.03.2022 19:06

Привет @ThivagarMoorthy. Вы хотите игнорировать или разделять пробелы? Поделитесь примерами входных данных и ожидаемых результатов.

Vishal K 18.03.2022 08:18

Привет @Vishak, конечно. Пример входных данных: фрукты = яблоки и апельсины. Ожидаемый результат: «фрукты» в одном столбце и «яблоки и апельсины» в другом столбце.

Thivagar Moorthy 18.03.2022 12:36

Привет @ThivagarMoorthy. Я обновил свой ответ на основе вашего нового требования.

Vishal K 18.03.2022 14:09

Привет @Vishal, Большое спасибо за ответ!

Thivagar Moorthy 18.03.2022 18:12

Рассмотрим ниже подход

select 
  arr[offset(0)] as splitstring1,
  arr[safe_offset(1)] as splitstring2
from  your_table,
unnest([struct(regexp_extract_all(string, r'[^=]+') as arr)])          

если применяется к выборочным данным в вашем вопросе - вывод

Другие вопросы по теме