1

我需要将varchar字段拆分为设定长度的行,但没有分隔符。

示例:
归档值:'Field example of varchar'
我想将其拆分为长度为 5 的行。结果应该是:

"Field"
" exam"
"ple o"
"f var"
"char "

我试过这个查询:

select regexp_split_to_table('Field example of varchar','(.{5})') as x

但它不起作用,它返回五个空行。

4

2 回答 2

2

您可以使用generate_series().
应该比正则表达式要快很多regexp_matches(),因为正则表达式功能强大但代价高昂

SELECT substring(col, generate_series(1, length(col), 5), 5)
FROM   tbl;

请注意,如果该列为空或为空,则所提供的任何一种解决方案都不会得到任何回报。NULL

-> SQLfiddle 并排演示。

于 2013-01-11T15:53:42.343 回答
1

您可以不使用regexp_split_to_table,而是使用regexp_matches

select (regexp_matches('Field example of varchar', E'.{1,5}', 'g'))[1]
于 2013-01-11T12:34:47.997 回答