«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как разделить столбец Postgres на несколько строк?

Как разделить столбец Postgres на несколько строк?

Опубликовано в 2025-02-26
Просматривать:812

How to Split a Postgres Column into Multiple Rows?

разделить столбец на несколько строк в Postgres

Задача задачи

рассмотрим следующую таблицу Postgres:

subject |  flag
--------- ------
this is a test | 2

цель состоит в том, чтобы преобразовать эту таблицу в новую таблицу с каждым словом в столбце «Субъект», которая является новой строкой, при сохранении соответствующего значения «флаг».

один эффективный способ достижения этого в Postgres - использовать боковое соединение в сочетании с string_to_table () (доступно в Postgres 14). Это позволяет нам разделить столбец «субъект» на индивидуальные токены и присоединиться к ним с исходной таблицей. От tbl, string_to_table (субъект, '') как токен Где flag = 2;

В этом запросе мы используем боковое соединение, чтобы сгенерировать набор строк для каждого токена в столбце «Субъект», и мы фильтруют результаты на основе указанного значения «флаг».

SELECT token, flag
FROM tbl, string_to_table(subject, ' ') AS token
WHERE flag = 2;
альтернативные подходы

для Postgres 13 и раньше, Unnest (string_to_array (субъект, ' ')) может использоваться вместо string_to_table (субъект,' '). Другой подход состоит в том, чтобы использовать функцию regexp_split_to_table (), которая обеспечивает более гибкую токенизацию на основе регулярных выражений. Однако этот подход, как правило, медленнее, чем использование string_to_table ().

]
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3