假设我有一个这样的表:
subject | flag
----------------+------
this is a test | 2
subject
是类型的text
,并且flag
是类型的int
。我想将此表转换为Postgres中的类似内容:
token | flag
----------------+------
this | 2
is | 2
a | 2
test | 2
是否有捷径可寻?
在Postgres 9.3+中,使用联接LATERAL
:
SELECT s.token, flag
FROM tbl t, unnest(string_to_array(t.subject, ' ')) s(token)
WHERE flag = 2;
请注意LATERAL
,如果unnest()
实际返回行,则联接的简写形式仅返回行。
您也可以使用regexp_split_to_table()
,但这通常比较慢,因为正则表达式匹配要花费更多。
有关:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句