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

しかし、それは機能せず、5つの空の行を返します。

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 に答える