我需要将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
但它不起作用,它返回五个空行。
我需要将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
但它不起作用,它返回五个空行。
您可以使用generate_series()
.
应该比正则表达式要快很多regexp_matches()
,因为正则表达式功能强大但代价高昂。
SELECT substring(col, generate_series(1, length(col), 5), 5)
FROM tbl;
请注意,如果该列为空或为空,则所提供的任何一种解决方案都不会得到任何回报。NULL
您可以不使用regexp_split_to_table,而是使用regexp_matches:
select (regexp_matches('Field example of varchar', E'.{1,5}', 'g'))[1]