рассмотрим следующую таблицу 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