在 Postgres 中,可能需要将具有单列文本类型的表转换为具有多行的表,其中每行代表文本列中的一个标记。
考虑以下源表:
</p> <table> <thead><tr> <th>subject</th> <th>flag</th> </tr></thead> <tbody><tr> <td>this is a test</td> <td>2</td> </tr></tbody> </table> <p>
所需的输出是一个表,其中二列:
token | flag |
---|---|
this | 2 |
is | 2 |
a | 2 |
test | 2 |
对于 Postgres 14 及更高版本,LATERAL join 可以与 string_to_table() 函数一起使用来实现此转换。查询的最小形式是:
SELECT token, flag FROM tbl, string_to_table(subject, ' ') token WHERE flag = 2;
对于 Postgres 13 及更早版本,应使用 unnest(string_to_array(subject, ' ')) 而不是 string_to_table(subject, ' ')。
string_to_table() 函数将主题列拆分为单独的标记,每一行一个标记,标记具有相同的值 柱子。 WHERE 子句过滤结果,仅显示标记为 2 的标记。
此解决方案提供了一种简洁高效的方法,可在 Postgres 中将文本列拆分为单独的行。
以上是如何在 PostgreSQL 中将文本列拆分为多行?的详细内容。更多信息请关注PHP中文网其他相关文章!